我想弄清楚这段代码发生了什么
int i = 10, j = 7, l;
unsigned int k;
double q = 3.56;
char c;
c = q * i * j;
l = c;
std::cout << l << "\n"; // result is -7
std::cout << c << "\n"; // result is ?
我不明白为什么 l 结果是“7”,而对于 c,无论我改变 i、j 的值,c 的结果总是“?”。谁能给我指出一个原因?谢谢
最佳答案
3.56 * 10 * 7
的结果是 249.2。
如果您系统上的 char
类型是一个带符号的 8 位值,范围从 -128 到 127,那么尝试分配 249.2 将导致溢出。如果您分配给 int
而不是 char
它将存储为 249。
问号是因为 -7 不是可打印字符。
关于c++ - C++中令人困惑的混合数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038558/