【发布时间】:2021-12-25 10:28:30
【问题描述】:
当我写这段代码时:
using namespace std;
int main(){
char x[] = "γεια σας";
cout << x;
return 0;
}
我注意到编译器给了我输出,我排除了γεια σας 虽然数组的类型是char,也就是说,它应该只接受 ASCII 字符。
那么为什么编译器没有报错呢?
【问题讨论】:
-
C++ 标准中没有任何内容表明
char仅 适用于 ASCII 字符,您从哪里得到这个想法? -
@UnholySheep 它也得到 EBCDIC 但我知道它没有得到 Unicode 字符
-
@Retired Ninja 是的,我听说过 utf-8,但我知道 utf-8 字符太大,所以 char 类型无法容纳它,因为它的范围是 0-255
-
你知道错了。一个 utf-8 代码点被定义为适合 8 位,
sizeof(char)被定义为足够大以能够容纳它 -
@UnholySheep
sizeof(char)被定义为标准中的一个。char中的位数指定为至少 8 位,并且不需要 ASCII(因此没有什么可以阻止char被 utf-8 编码)。