在 C 编程中,char、signed char 和 unsigned char 被视为不同的数据类型。这种行为与整数不同,其中 int 和signed int 是相同的类型,而 unsigned int 是另一种单独的类型。
问题:
为什么下面的代码对 char 类型的编译与对 int 类型的编译不同?
cout << getIsTrue< isX<int8>::ikIsX >() << endl; cout << getIsTrue< isX<uint8>::ikIsX >() << endl; cout << getIsTrue< isX<char>::ikIsX >() << endl;
答案:
C 将 char、signed char 和 unsigned char 区分为三种不同的类型。这就是为什么 char、int8 和 uint8 的模板实例化是不同的。
然而,对于整数,int 和signed int 是相同的类型,而 unsigned int 是不同的类型。这就是为什么 int、int32 和 uint32 的模板实例化只会产生两个唯一的模板。
标准 [basic.fundamental](https://eel.is/c Draft/basic.fundamental) 指出:
“普通字符、有符号字符和无符号字符是三种不同的类型。”
这意味着它们具有不同的对象表示形式,并且可以具有不同的值范围,具体取决于实现。
以上是为什么 C 中'char”、'signed char”和'unsigned char”与'int”、'signed int”和'unsigned int”的处理方式不同?的详细内容。更多信息请关注PHP中文网其他相关文章!