我不明白为什么这会导致未定义的行为或它所谓的任何东西?
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/