关于unsigned char和signed char的问题

cssin 2002-06-16 12:18:41
现在我正在学习C++,用的书是《C++ Primer》(3rd Edition)。在这本书的Chapter 3中介绍char类型时,有这么一句话:
An 8-bit signed char may represent the values -128 through 127;
an unsigned char, 0 through 255.
所以我写了段代码对其进行测试:
#include <iostream>
using namespace std;

int main()
{
signed char c = 127;
cout << c+1 << endl;
return 0;
}
编译通过,但是输出128。
这是为什么?

PS:我用的编译器是Dev-C++带的g++。
...全文
92 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
codingcoding 2002-06-16
编译器会把她提升到int,如果你直接让c=1000。那么编译器会给出警告的。但是不会出错。
回复
delphihero 2002-06-16
fu you
c+1 的类型时什么,扩展了当然不会在0-127 范围,
如果你用
signed char d=c+1; 这就不行了。你可以看到 i变成了 -128 (溢出了)
#include <iostream>
using namespace std;

int main()
{
signed char c = 127;
signed char d;
d=c+1;
int i=d;
cout << c+1<<"\n"<<i<< endl;
return 0;
}

回复
winhero 2002-06-16
1是一个整型变量,所以C+1也是一个整型变量.
回复
winhero 2002-06-16
你输出的是c+1的值,编译器先生成一个临时变量temp,计算temp=c+1,输出的当然是128啦
回复
相关推荐
发帖
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-06-16 12:18
社区公告
暂无公告