我想弄清楚这段代码发生了什么
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 ?
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么l结果为'7',对于c,无论我改变值i,j,c的结果总是'?'.有人能指出我的理由吗?谢谢
结果3.56 * 10 * 7是249.2.
如果char系统上的类型是带符号的8位值,范围从-128到127,则尝试分配249.2将导致溢出.如果分配给a int而不是a char,则将其存储为249.
问号是因为-7不是可打印的字符.