c++ - 在 C++ 中从 char 类型转换为 int - 奇怪的值

标签 c++ casting

我不明白为什么这会导致未定义的行为或它所谓的任何东西?

 char ch[10];
 strcpy(ch, "street1-3");

 char ch2 = ch[6];

 cout << ch2 << endl;
 int n = (int) ch2;
 n = n * 12;
 cout << n << endl;

即cout首先打印出street1-3的第6位即“1”。 然后,当我尝试将此 char 类型转换为 int 时,值变得不是预期的值,即 12,而不是 588。

在控制台窗口输出

 1
 588

我在类型转换中做错了什么,如何解决?

最佳答案

字符 '1' 没有 1 的 ascii 值。所以 (int)'1' != (int)1

如果您查看 ASCII 表,您会看到 '1' == 49,巧合的是(或不是......)49*12 == 588.

关于c++ - 在 C++ 中从 char 类型转换为 int - 奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23737008/

相关文章:

C++ vector : Why is this piece of code not working?

c++ - 类中定义的方法的地址

c++ - 具有多重继承的模糊基数

c - 将 double 值添加到无符号 64 位值会产生奇怪的结果

C++ 自动与自动&

c++ - 计算具有不同行高的网格中的滚动条高度

c++ - 修改变量地址?

c++ - 如何从C++中的指针读取字节序列?

c++ - 如何从 char* 转换为 T*?

c# - 按位运算评估为长