字符型转整型具体怎么转
float a=2.0;
int b=6,c=3;
求表达式a*b/c-1.5+‘a'+(b-5)的值
这其中的关系是怎么转的我不懂?这其中的字符型a转化成int型的答案为97.0是怎么转的尤其不懂,麻烦有人能告诉我其中的转化关系是怎么的,还有int型转double型具体是怎么转的也告诉我 谢谢···
[解决办法]
这是C++的语法规定,不同类型运算时,自动转换类型....
自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:
1.若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2.转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
4.char型和short型参与运算时,必须先转换成int型。
5.在赋值运算中,赋值号两边量的数据类型不同时, 赋值号右边量的类型将转换为左边量的类型。 如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度, 丢失的部分按四舍五入向前舍入。
当参加算术或比较运算的两个操作数类型不统一时,将简单类型向复杂类型转换,
char(short) -> int(long) -> float -> double
[解决办法]
'a' = 97 是因为ASCII查出来的
剩下的楼上说的很明白了
[解决办法]
字符'a'的ASCII码就是97.
常见的ASCII对应关系应该记住, 'A'是0x41, 'a'是0x61, '0'-'9'是0x30-0x39
[解决办法]
范围小的提升为范围大的
[解决办法]
[解决办法]
[解决办法]
2楼正解
[解决办法]
- C/C++ code
#include <stdio.h>void main(){ float a=2.0 ; int b=6,c=3 ;// a*b/c-1.5+'a'+(b-5) ; printf("占字节%d\n", sizeof(1.5)) ; /*注意:这里输出为 8 ,说明对于一个浮点型常量,系统分配8字节存储,即 double 型*/ printf("占字节%d\n", sizeof(a*b)) ; /*我这里输出为 4 ,这里浮点型运算 ,把int型提升为float型 ,并没有提升到double型 *//*下面两个输出为8字节,没有问题,因为1.5以double型存储;;字符参与算术运算,要以其对应的ASCII进行*/ printf("占字节%d\n", sizeof(a*b/c-1.5)) ; printf("占字节%d\n", sizeof(a*b/c-1.5+'a'+(b-5))) ;}
[解决办法]
/*我这里输出为 4 ,这里浮点型运算 ,把int型提升为float型 ,并没有提升到double型 */
借宝地发问一下!!
我也记得浮点型参与运算是要提升到double型,不过我的输出为4字节;难道又与编译器有关??
[解决办法]
1#回答已经很清楚了