在C语言中不同的数据类型之间是如何转换的 不同的数据类型是怎样计算的

如程序 void main(){ long x,y; int a, b ,d; unsigned int c; fioat f1,f2; doubie d1; x=-5,y=6; a=3,b=8; c=x+a; d=y+b; printf(“c=x+a=%u,d=y+b=%d\ ”,c,d); f1=3.4; d1=13.6; a=f1; f2=d1; printf(a=%d\ ,a); printf(“%f,%f,%f”,f1,f2,d1); } 是怎样算出c=x+a=65534,d=y+b=14 a=3 3.400000,13.600000,13.600000的 请写出详细过程 还有为什么用了输出字符%f小数点后面必须是六位啊 谢谢各位哥哥姐姐了

第1个回答  推荐于2017-11-26
在C语言中,不同数据类型在进行运算时首先要转换成同一类型,一种是自动转换,二是强制转换,如(int)a 将a强制转换为int型 转换原则:箭头是转换方向 char,short->int->unsigned->long,float->double 说这个题之前要接受一个事实:不同计算机上运行此程序结果会不一样,原因和你是好多位计算机有关系,在很多书上int占两个字节,而在有些计算机却占4个字节,具体是好多你可以用sizeof(int)测试一下,那我的计算机就占4个字节,现在再看题:c=x+a x为长整型a为整型,运算之前先将a自动转换为长整型,x=-5,计算机存储为0FFFFFFFBh,a=3,x+a=0FFFFFFFEh 输出格式是%u 也就是以十进制无符号形式输出,结果为4294967294而不是65534。d=y+b,a=3就不用多说明了,最后用%f输出单精度或双精度浮点数,其默认为6位小数,要想控制显示位数用%m.nf,具体看看书哈本回答被提问者采纳
相似回答