c语言中,关于数据类型转换的两道题 1、int a; float f; double i; 那

c语言中,关于数据类型转换的两道题
1、int a; float f; double i; 那么表达式10+'a'+i*f的数据类型转换过程是怎样的?
2、char w; int x; float y; double z; 那么表达式 w*x+z-y 的数据类型转换过程是怎样的?
求详细解答,辛苦了,谢谢!!!!

先说下数据类型的优先级:double>float>int>char,也就是遇到比自己优先级大的,就往优先级大的转化。
第一个10+'a'+i*f,里面有double,所以10+'a'还是int型的,i*f是double型的,然后两个相加,都变成double型。
w*x是int型的,char型的是字符,进行计算的时候,会用sacll码转化为int型进行计算,所以还是int型的。然后进行加减后,都变成double型。
有什么不懂的,还可以问我,希望能采纳,谢谢。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-12-10
'a'是对应asc码为a的字符,字符和整形数据都通用的,
10+'a'
也就是10+a
+i*f
float*double=double(表达式取表达范围广精度高的)
所以1式最后为double型

w取其对应的asc码值,
w*x也就是int*int
+z-y
同理2式最后为double型
第2个回答  2015-12-10
不同标准转换有细微差别,unsigned 与int之间的转换,C99与C11不同。
10 + 'a' + i*f;
1、10被识别为int类型,'a'识别为char类型,因为有+号,所以char 类型隐式转换为int类型,i*f中i为double类型,f为float类型,double*float,float类型转换为double类型,结果为double类型。之后结果为int + double;
于是将int转换为double,再相加。具体过程如下:
int + char + double*float;
int + int + double*double;
int + double;
double + double;
double;
2、
char * int + double - float;
int * int + double - float;
int + double - float;
double + double - float;
double - float;
double - double;
double;
第3个回答  2015-12-10
1.表达式10+'a'+i*f,因为*运算符的优先级高于+运算符,所以先计算i*f,但i为double f为float,所以最后的运算结果为double,不必在意他是怎么转换的,如果你希望的得到的结果为指定类型的话可以显示的强制转化,整个表达式的值的类型取决于你将表达式赋给什么类型的值,编译器会自动转换,但最好不要将double的值赋给float,精度会差些,编译器在运算过程中应该是先将float转换为double,还有一点是'a'是字符类型,对应ASCII码97,我也是刚学c,知道的也不是很专业,但是这些都是纯手打,如果说错了请见谅

...关于数据类型转换的两道题 1、int a; float f; double i; 那
先说下数据类型的优先级:double>float>int>char,也就是遇到比自己优先级大的,就往优先级大的转化。第一个10+'a'+i*f,里面有double,所以10+'a'还是int型的,i*f是double型的,然后两个相加,都变成double型。w*x是int型的,char型的是字符,进行计算的时候,会用sacll码转化为int型进行...

c语言中int类型float类型double类型变量做加减运算结果是什么类型?
当int类型、float类型、double类型变量做加减运算时,其结果的类型取决于操作数的类型和运算符。如果操作数中有一个是double类型,则运算结果也将是double类型。如果操作数中有一个是float类型,而另一个是double类型,则运算结果将是double类型。如果操作数中没有double类型的变量,则运算结果将是float类型...

c语言中,int对应%d,float对应%f,double对应啥?float对应几个字节?_百 ...
float类型必须用%f,double必须用%lf 32位编译器下 float占4个字节 double占8个字节

C语言问题,关于float int double型变量
int只能表达整数 float和double表示小数 double比float表示的更长的有效位数,精度更高。

c语言类型转换为float int a=1; (float)a; printf("%f",a);为什么结 ...
printf("%f", (float)a); \/\/ 输出 1.000000 a = (float) a; \/\/ a 还是 int 型。 printf("%f",a); \/\/ 输出 0, 格式与类型不配。

c语言中输入int与double与float的区别在哪里?为什么用不
了解C语言中数据类型的使用,尤其是整数类型(int)与浮点数类型(float, double)的区别,对编写高效、准确的代码至关重要。首先,int 类型用于表示整数,而float和double则用于表示带有小数点的数值。尽管float和double在使用上差异不大,但它们在内存存储和精度上有所不同。具体来说,double类型的变量...

c语言数据类型转换
1、C语言类型转换分级别,一般多是:默认状态:低级向高级转换,级别高低小到大int、float、double注意char只可以和int之间转换;2、若要高级向低级转换:就要用到强制类型转换符;3、强制类型转换是通过类型转换运算来实现的。其一般形式为: 类型说明符表达式 其功能是把表达式的运算结果强制转换成类型说明...

C语言中关于改变数据类型以提取float中的整数和小数部分
浮点数在内存中一般都是近似存放的,那是不可避免的现象。由于float型精度较差,常常出现这种问题。把float型改成double型,数据位数不是很多(10位以上)时一般就不会出现这种情况了。

...的自动转换是什么意思啊?char<int<float<double又是啥意思呢_百度知...
举个例子吧,比如定义int a;float b;此时b\/a就是浮点型即float型,是自动转换的,转换规则就是你下面写的类型名不等式

c语言 int a; float b; double c; scanf("%d,%lf,%lf",&a,&b,&c...
这是因为程序中输出数据的格式符指定错误。因为float型的输出必须%f而不能使用%lf格式符。,还有就是要注意输入数据时,要用英文的逗号分隔不同的数字:关于printf格式符更多的使用说明,见下述:详见:网页链接

相似回答