智能车制作
标题:
CodeWarrioed C语言语法与标准C不一样
[打印本页]
作者:
阿牛哥
时间:
2014-5-8 19:39
标题:
CodeWarrioed C语言语法与标准C不一样
如果我定义的D[0],D[1]都是unsigned int型,S是double型
那么S=D[1]-D[0];
如果D[1]=0,D[0]=1;
S=65535;
取unsigned int型的补码
但按照标准C应该是double的补码才是。
作者:
简单丹
时间:
2014-5-8 20:31
没试过..........
作者:
竹音清影
时间:
2014-5-8 21:00
看不懂。
作者:
wxzcldw
时间:
2014-5-9 08:47
编译器编译之后的执行过程应该是:
1、计算D[1]-D[0],结果记作Ans;
2、将整形结果Ans强制类型转换并赋值给S
D[1]和D[0]都是无符号整形,那么D[1]-D[0]还是整形运算,所以结果是65535,之后S=65535是将无符号整形强制转换为双精度浮点型,数值没有溢出,所以不会是双精度浮点型的补码。
如果你要你要得到浮点型补码,应该这样写:
S=(double)D[1]-D[0];
或者直接将D[1]定义为浮点型!
作者:
阿牛哥
时间:
2014-5-15 19:26
我就是这么试的
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2