关于unsigned char和signed char的问题
来源:互联网 发布:胡歌演技 知乎 编辑:程序博客网 时间:2024/04/30 15:08
在定义一个8位变量和字符型变量时,很多人爱使用unsiged char而不喜欢使用char,其主要原因是unsigned char的取值范围是0~255,而char的取值范围是-128~+127,一般人不处理负的数值,所以认为unsigned char往往能够兼容char。
现在我正在学习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++。
回复:::
你输出的是c+1的值,编译器先生成一个临时变量temp,计算temp=c+1,输出的当然是128啦;
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;
}
编译器会把她提升到int,如果你直接让c=1000。那么编译器会给出警告的。但是不会出错。
- 关于unsigned char和signed char的问题
- unsigned char 和signed char的选择问题
- signed char 和 unsigned char
- signed char 和 unsigned char
- signed char 和 unsigned char
- unsigned char 和 signed char
- unsigned char 、signed char 和 char的不同
- char, signed char, unsigned char的区别
- char、signed char、unsigned char的区别
- signed char & unsigned char
- signed char 和unsigned char 区别
- char、signed char、unsigned char
- char & unsigned char & signed char
- arm-linux-gcc char与signed char和unsigned char
- signed char*/unsigned char*/QString
- char与signed char, unsigned char的区别
- C - char与signed char, unsigned char的区别
- char与signed char, unsigned char的区别
- 13位CEO告诉你成功始于首份工作的谦卑(图文)
- stdafx.h头文件的作用
- To enable and disable Portal Trace
- 什么是COM组件 - liming0658的专栏 - CSDNBlog
- 识别用户是否登录
- 关于unsigned char和signed char的问题
- QC工作日志1
- 华为西安最新动态
- 11.9日寄出三方协议
- 上传文件
- 关于统计和页面显示问题
- 程序员是什么?
- Hibernate基本配置文件
- 深度解析:J2EE vs .NET开发平台