将 2 个字符分配给一个 int

Assign 2 char to an int

我试图理解这段代码的结果:

#include<iostream>

using namespace std;

int main()
{
    int a = 'dd';
    cout << a;
    return 0;
}

结果是25700,编译器是怎么得到这个数字的? 谢谢

'd' 的 ascii 码是 0x64。编译器将文字 'dd' 表示为 0x6464,用十进制表示法表示为 25700。

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

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


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

... An ordinary character literal that contains more than one c-char is a multicharacter literal. A multicharacter literal has type int and implementation-defined value.

'dd' 被语句 int a='dd';

隐式转换为 int