C语言菜鸟问题,在线给分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

2024年11月17日 16:44
有5个网友回答
网友(1):

1)全扩展0
2)char a[] = "53.65"; //第二题给得不是很清晰,只能才你提问的意思了.如果你是要将任意的一个浮点数放到字符数组里的话,需要编写个算法了.还有就是强制类型转换了,这个估计不是你的意思吧!( float flt = 53.65;char ch = (char)flt;)
3)12*12=144,这时候变量a是144,所以后面一步你计算错了,应该是144-144=0,最后a=0+0所以a还是0.
您真慷慨,其实不用给分也会回答您的,这样的问题是举手之劳!

flyinwoods:用unsigned是和操作系统无关的,所以肯定是全扩展零。只有int由于符号位的存在,才可能会有扩0和扩1这两种可能性。

网友(2):

问题一: 0
问题二:可以这样理解,float转换为int后舍去小数位为53,而"5"的ASCII码正好是53,所以转化为char后的值是"5";
问题三:表达式可看作a+=(a-=(a*=a));
第一步,a*=a就是a=a*a=12*12=144(注意此时变量a的值修改为144了),
第二步,a-=(a*a)即为a-=144;所以a=a-144=144-144=0(注意此时变量a的值修改为0了);
第三步,a+=(a-=(a*a)),即为a+=0;所以a==0了,呵呵!

网友(3):

纠正一下,问题1要看操作系统的,一般你看成全扩0就可以了

问题2,用强制转换(char)53.65
这样转换过以后值是53,而ASCII码的53就是0x35,也就是字符'5'

问题3上面已经回答过了

网友(4):

问题一: 全扩0.
问题二: float a = 53.65;
char b = (char) a;
b的值是'5'.
问题三: a+=(a-=(a*=a)) = a+=(a-=144) = a+=(144-=144) = a+=0 = 0+=0 = 0
每一步运算,a的值都会有所变化的,不要总是用原值。

网友(5):

第一题没看懂,
第二题要用到 IEEE 754 标准
你可以用这段代码查查浮点在内存中的数据
float a = 53.65;
int c;
c = *(int *)&a;
c就是内存中的数据
第三题
从右向作依次执行
到 a -= 完了后 a 就是 0 了。