c++ - C++中令人困惑的混合数据类型

标签 c++

我想弄清楚这段代码发生了什么

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/

相关文章:

c++ - 在对象内的数组中设置值

c++ - 如何从文件中读取文本行并将它们放入数组中

c++ - 设置因 move 语义而无效的迭代器

c++ - 将字符数组的一部分复制到 C++ 中的 wxString

c++ - 如何改进opencv中的特征检测

c++ - 使用 Makefile 在多个文件 C++ 中构建互连类

c++ - 我如何解释这段 C++ 代码?

c++ - 警告 : derived class's member variable is initialized after base class

c++ - 平面方程的多面体

c++ - 为什么我的输出流段错误并且我的虚拟析构函数不起作用但是当我杀死虚拟时它会起作用