关于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++。
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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啦

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧