返回信息流#include <stdio.h>
int main()
{
char x=124;
char y=x+x;
printf("x+x== %X\n",x+x);
printf("y==%02X\n\n",y);
}
请问一下这个程序输出什么?为什么?谢谢了啊
这是一条镜像帖。来源:北邮人论坛 / cpp / #34324同步于 2009/12/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于整型的小问题!谢谢……
chemical
2009/12/27镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 chemical 的大作中提到: 】
: #include <stdio.h>
: int main()
: {
: .................
你试试看不就知道了
【 在 chemical 的大作中提到: 】
: #include <stdio.h>
: int main()
: {
: ...................
printf("x+x== %X\n",x+x); //x为char,但是计算结果由于%X提升为整型,248,即F8
printf("y==%02X\n\n",y); //y为char,且二进制首位为1,扩展成整型,前面补很多1~
【 在 zenith 的大作中提到: 】
:
: printf("x+x== %X\n",x+x); //x为char,但是计算结果由于%X提升为整型,248,即F8
: printf("y==%02X\n\n",y); //y为char,且二进制首位为1,扩展成整型,前面补很多1~
: ...................
是不是说第一个计算结果直接就是int型了,而第二个需要从char转换为int型?
Char 默认是有符号的,范围为(-128,127)。
所以124+124=248>127,已经溢出了,
溢出后的值等于248-256=-8,
-8的十六进制表示就是FFFFFFF8(32位机器)
【 在 king007 的大作中提到: 】
: Char 默认是有符号的,范围为(-128,127)。
: 所以124+124=248>127,已经溢出了,
: 溢出后的值等于248-256=-8,
: ...................
谢谢……
请问溢出后的值是怎么计算的,为什么是248-256?
【 在 king007 的大作中提到: 】
: Char 默认是有符号的,范围为(-128,127)。
: 所以124+124=248>127,已经溢出了,
: 溢出后的值等于248-256=-8,
: ...................
LZ你真明白了么,你前两天才问过一个一样的题。。。
http://forum.byr.edu.cn/wForum/disparticle.php?boardName=CPP&ID=34260&pos=23