将2个char分配给int

and*_*312 3 c++ int ascii char

我想了解这段代码的结果:

#include<iostream>

using namespace std;

int main()
{
    int a = 'dd';
    cout << a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果是25700.编译器如何获得此数字?谢谢

Yu *_*Hao 6

'dd'是一个多字符文字,它的类型是int,它的值是实现定义的.

在许多实现中,该值被计算为256 * 'd' + 'd',即25700.


来自C++11§2.13.2字符文字

...包含多个c-char的普通字符文字是多字符文字.多字符文字具有类型int和实现定义的值.


Mic*_*ael 5

ascii代码为'd'0x64.文字'dd'由编译器表示为0x6464,以十进制表示法写入时为25700.

  • 你应该在答案中注意到这不是普遍的规则.每个编译器都可以自由地解释它想要的多字符"文字". (4认同)
  • 所以我事先无法知道肯定会有什么价值(如果25700或其他编译器中的其他人)对吗? (2认同)