我只是想知道为什么n = 0?
char c = 0xff;
int n = c+1;
cout << n << endl;
system("pause");
Run Code Online (Sandbox Code Playgroud)
1)c = 0xff
2)0xff + 1 = 0x100.
你能解释一下吗?
假设一个无符号char类型,0xff将给出十进制值255.添加一个,你得到256,0x100或256.这将被打印出来,100好像你已经被操作std::cout以十六进制打印std::cout << std::hex;
假设一个8位符号char,0xff将溢出,给-1.添加1,你会得到0.
您的平台显然使用签名 char类型.初始化时0xFF,它会溢出并导致实现定义的行为.你的c结局等于-1.当你加入1时-1,你会得到0.这里没什么不寻常的.
声明你的cas unsigned char,结果n值将是0x100,这可能是你所期望的.
| 归档时间: |
|
| 查看次数: |
2826 次 |
| 最近记录: |