
C语言菜鸟问题,在线给分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
问题一unsigedint(2进制第1位是是1)附值给unsigedlong符号补完第扩展是全扩0还是全扩1?问题二float53.65转化成char怎么转???书上习题...
问题一
unsiged int(2进制第1位是是1) 附值给 unsiged long
符号补完第扩展是全扩0还是全扩1?
问题二
float 53.65 转化成 char 怎么转???书上习题答案上写的char值是'5'?
问题三
a=12
a+=a-=a*=a
经过运算后a的值,书上答案是0,我怎么算出来是-120哪算错了?
看我的步骤:12*12=144 12-144=-132 12+(-132)=-120
答案0怎么得出来的???书上写错了??答案??
问题四!!!!!!!!!!!!!!!!!!!!!!!看这个问题四!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
那么float 转换成 char 在内存中二进制是怎么转换的???
如果float是11.01或者999.99呢,强制转换成char 2进制是多少???第1个带小数也没益出,第2个数舍去小数也益出了,这个是只取2进制中间那部分吧?还要不超过128?具体转换的规则?? 展开
unsiged int(2进制第1位是是1) 附值给 unsiged long
符号补完第扩展是全扩0还是全扩1?
问题二
float 53.65 转化成 char 怎么转???书上习题答案上写的char值是'5'?
问题三
a=12
a+=a-=a*=a
经过运算后a的值,书上答案是0,我怎么算出来是-120哪算错了?
看我的步骤:12*12=144 12-144=-132 12+(-132)=-120
答案0怎么得出来的???书上写错了??答案??
问题四!!!!!!!!!!!!!!!!!!!!!!!看这个问题四!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
那么float 转换成 char 在内存中二进制是怎么转换的???
如果float是11.01或者999.99呢,强制转换成char 2进制是多少???第1个带小数也没益出,第2个数舍去小数也益出了,这个是只取2进制中间那部分吧?还要不超过128?具体转换的规则?? 展开
展开全部
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)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这两种可能性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题一: 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了,呵呵!
问题二:可以这样理解,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了,呵呵!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
纠正一下,问题1要看操作系统的,一般你看成全扩0就可以了
问题2,用强制转换(char)53.65
这样转换过以后值是53,而ASCII码的53就是0x35,也就是字符'5'
问题3上面已经回答过了
问题2,用强制转换(char)53.65
这样转换过以后值是53,而ASCII码的53就是0x35,也就是字符'5'
问题3上面已经回答过了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题一: 全扩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的值都会有所变化的,不要总是用原值。
问题二: 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的值都会有所变化的,不要总是用原值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题没看懂,
第二题要用到 IEEE 754 标准
你可以用这段代码查查浮点在内存中的数据
float a = 53.65;
int c;
c = *(int *)&a;
c就是内存中的数据
第三题
从右向作依次执行
到 a -= 完了后 a 就是 0 了。
第二题要用到 IEEE 754 标准
你可以用这段代码查查浮点在内存中的数据
float a = 53.65;
int c;
c = *(int *)&a;
c就是内存中的数据
第三题
从右向作依次执行
到 a -= 完了后 a 就是 0 了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询