#include <iostream>
using std::cout;
int main()
{
char number = -104;
number > > = 2;
cout < < number;
return 0;
}
如果将char改为int则显示-26,事实上是想通过char来说明这个效果可为什么运行后命令行没有任何数字?
char作为1字节变量作用有两个:
1.存储给定值域内整数,值域为(-128,127)
2.存储单个ASCII代码
ASCII的范围是(0,127)
那char的负数仅仅是存储一个变量为负的整数么,还是有其他作用?如果仅是这样和int除了范围上不同还有什么区别?
------解决方案--------------------------------------------------------
老问题了。
内存里都是0,1.
-104,就是
0110 1000
因为是负数,所以要用补码表示,补码就是反码+1.
0110 1000 的反码就是
1001 0111 就是十进制的151,反码+1,就是152,内存里表示就是
1001 1000
因为char的有效范围一般是0~128。所以,显示的时候当作正数分析。就是
0x98,也就是 '˜ '。右移2个位,
char是有符号的,不足的补1,就成了
1110 0110,就是0xE6,十进制就是230字符就是 "æ "。不是可见字符。可见ASCII是0~128,超过128的是要2个字节组合起来显示的。一个显示不出来。
如果是int 就用32个位来作。
char number = -104;//number =
number > > = 2;
cout < < number;