unsigned char x = 0;
unsigned char y = 150;
x = 2 * y;
cout << "x: " << (int)x << endl; // returns 44
我知道无符号字符表示从0到255的ASCII字符,但我不知道为什么x会打印我们的44。
有人有我可以追踪的ASCII图表吗?
我知道无符号字符表示从0到255的ASCII字符,但我不知道为什么x会打印我们的44。
因为2 * 150是300,它大于255。300在系统上非伪字符的可表示值之外。
缓冲区溢出。无符号字符值在0-255之间因此,如果您将其分配给150 * 2即300,那么您将得到44