相关疑难解决方法(0)

为什么C或C++标准没有明确地将char定义为signed或unsigned?

int main()
{
    char c = 0xff;
    bool b = 0xff == c;
    // Under most C/C++ compilers' default options, b is FALSE!!!
}
Run Code Online (Sandbox Code Playgroud)

C或C++标准都没有将char指定为有符号或无符号,它是实现定义的.

为什么C/C++标准没有明确地将char定义为有符号或无符号以避免像上述代码那样的危险误用?

c c++ compiler-construction standards types

43
推荐指数
1
解决办法
2874
查看次数

为什么char与signed char或unsigned char不兼容?

我发现C99标准有一个语句,它拒绝类型char和signed char/unsigned char类型之间的兼容性.

C99标准注35:

在limits.h中定义的CHAR_MIN将具有值0或SCHAR_MIN之一,这可用于区分这两个选项.无论做出何种选择,char都是与其他两种类型不同的类型,并且与两者都不兼容.

我的问题是为什么委员会否认兼容性?理由是什么?如果char与signed char或unsigned char兼容,会发生什么可怕的事情吗?

c compatibility char

9
推荐指数
2
解决办法
2094
查看次数

任何将'char'作为'unsigned'的编译器?

除非用户在文件或项目设置中明确提到,否则是否有任何C编译器将默认类型的char作为unsigned?

/ Kanu_

c compiler-construction signed char unsigned-char

5
推荐指数
1
解决办法
1989
查看次数