关于char和int的关系

[复制链接]
1926|7
 楼主| dfsa 发表于 2012-9-19 18:02 | 显示全部楼层 |阅读模式
要求输出ASCII码为32~127的对应字符。
[code=C/C++][/code]
void main()
{
int c; //声明为int型

for (c=32; c<128; c++)
{ cout << (char)c; } //强制转换为char型
cout << endl;
}

[code=C/C++][/code]
void main()
{
char c; //声明为char型

for (c=32; c<128; c++)
{ cout << c; } //本身已是char型
cout << endl;
}
上面的可以两个方法,只有第一种是有正常输出的。我不理解char和int的关系,最好具体针对这里的程序解释解释。
无冕之王 发表于 2012-9-19 18:22 | 显示全部楼层
char 的范围是-128 ~ 127, 所以 c < 128永真。
xsgy123 发表于 2012-9-19 18:30 | 显示全部楼层
128的时候就成负数-128了.
然后又-127,-126,永远都小于128了
baidudz 发表于 2012-9-19 18:39 | 显示全部楼层
32位 int类型,4个字节;char 占8个字节,当char的值到了128时,8位已经不够存了,就截断了,所以它的值永远小于128.
shenmulzb1985 发表于 2012-9-21 09:30 | 显示全部楼层
根本楼上的各位学习了啊,关于int 跟char 的区别的,在实际的调试中可很明显体现的
hawksabre 发表于 2012-9-22 18:43 | 显示全部楼层
int 的长度 与 机器字长相同, 16位的编译器上int长16位,32位的编译器上int长32位;

char 的长度应当可以包容得下一个字符,大部分系统中就是一个字节,而有的系统中可能是4个字节,因为这些系统中一个字符需要四个字节来描述;

char 的正负取决于编译器,而编译器的决定取决于操作系统,在不同的编译器中char可能等同于signed char,也可能等同于unsigned char;
hawksabre 发表于 2012-9-22 18:43 | 显示全部楼层
希望我的回答对你有帮助    谢谢   呵呵
wulala 发表于 2012-9-23 15:32 | 显示全部楼层
其实就是范围不一样的,有时候是可以通用的,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部