我无法弄清楚为什么这个结果是未定义的行为或其所谓的?
char ch[10];
strcpy(ch, "street1-3");
char ch2 = ch[6];
cout << ch2 << endl;
int n = (int) ch2;
n = n * 12;
cout << n << endl;
Run Code Online (Sandbox Code Playgroud)
这是cout首先打印出street1-3的位置6为"1".然后当我试图将这个char类型转换为int时,该值变为不是它预期的值,即12,而不是588.
在consolewindow中输出
1
588
Run Code Online (Sandbox Code Playgroud)
在类型转换中我做错了什么,它是如何解决的?
该字符'1'没有ascii值1.所以(int)'1' != (int)1.
如果你看一个ASCII表,你会看到'1' == 49,巧合(或不是......)49*12 == 588.
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |