5
A
回答
11
GCC确实。但是,只有在编译包含ARM Linux [*]的无符号字符的平台时。当GCC针对x86编译时,默认情况下是对char进行签名。
[*]或者至少它已经在过去。就我所知,linux已经在ARM上切换到了另一个默认的ABI。
Update'2013: Android编译器(gcc,clang)Android NDK默认为unsigned char
。 x86和MIPS编译器默认为signed char
。
2
通常有将其设置为默认选项,但没有我的知识的编译器做到这一点。
4
该标准要求标准所需的所有字符的整数值(AZ,az,0-9,基本标点符号等)为正值,所以任何使用编码的系统,其中这些字符的值不在范围为signed char
必须为才有明文char
为无符号。我相信这意味着所有的EBCDIC系统必须有一个没有签名的普通的char
,但我可能会误解。
+4
如果CHAR_BIT大于8,则char的值范围大于-128..127或者0..255。因此,在具有CHAR_BIT == 9的EBCDIC系统上,可以对普通的'char'进行签名。 – pmg 2010-09-16 18:04:54
相关问题
- 1. 当使用xcodes编译时强制“char”为“unsigned char”LLVM编译器
- 2. 如何将unsigned char *转换为char *
- 3. 如何将unsigned char *转换为数组<unsigned char> ^?
- 4. 将double转换为unsigned char?
- 5. 将unsigned char转换为NSString
- 6. 转换的char *为unsigned char *
- 7. 我如何编译boost ::精神为unsigned char类型?
- 8. 将数组从unsigned char *转换为char *
- 9. 的NSString为unsigned char []
- 10. 将vector <unsigned char>转换为const unsigned char *
- 11. 将byte * {aka unsigned char *}'转换为byte [32] {aka unsigned char [32]}
- 12. 如何将c中的unsigned char *转换为unsigned int *?
- 13. 如何将unsigned char转换为jbyteArray
- 14. 转换为unsigned char []
- 15. 如何将unsigned char *的内容转换为const char *?
- 16. char!=(signed char),char!=(unsigned char)
- 17. 转换的NSString为unsigned char
- 18. C++铸造的char *为unsigned char
- 19. 如何将const std :: vector <unsigned char>转换为char
- 20. 如何将块unsigned char *内存转换为[signed] char *内存块?
- 21. C++如何在函数调用中将char *转换为unsigned char *?
- 22. 将unsigned char *数组转换为jObject
- 23. 将unsigned char [10]转换为QBytearray;
- 24. 将unsigned char []解析为std :: string
- 25. 将Const char *转换为Unsigned long int - strtoul
- 26. 为什么istream_iterator <unsigned char,unsigned char> throw std :: bad_cast?
- 27. 将unsigned int +字符串转换为unsigned char向量
- 28. 将矢量<unsigned char>转换为矢量<unsigned short>
- 29. 将float 32精确地转换为unsigned short或unsigned char
- 30. C++:隐蔽INT为unsigned char
有。在MSVC中使用['/ J'(默认字符类型是无符号的]](https://msdn.microsoft.com/en-us/library/0d294k5z.aspx)。在GCC中,使用['-funsigned-char'](http://stackoverflow.com/a/20518559/995714) – 2016-02-20 03:29:04