在默认情况下,char是签名还是未签名?

在默认情况下,char是签名还是未签名?

在“C的完整参考”一书中提到char默认情况下没有签名。

但是我正试图用GCC和VisualStudio来验证这一点。它把它当作签名默认情况下。

哪一个是对的?


qq_笑_17
浏览 447回答 3
3回答

温温酱

这本书错了。标准没有指定是否普通。char是签名还是未签名。实际上,标准定义了三种不同的类型:char,&nbsp;signed char,和unsigned char..如果你#include <limits.h>然后再看看CHAR_MIN,你可以找出char是signed或unsigned(如果CHAR_MIN值小于0或等于0),但即便如此,三种类型是不同的。就标准而言。

PIPIONE

正如Alok所指出的,标准将由实现决定。对于GCC,默认为签名,但可以用-funsigned-char.&nbsp;注:对于android ndk中的GCC,默认为无签名。..您还可以显式地使用-fsigned-char.在msvc上,默认的签名,但您可以用/J.

慕斯王

C99 N 1256草稿6.2.5/15“类型”说明了类型的符号性char:实现将char定义为具有与签名字符或无符号字符相同的范围、表示形式和行为。在脚注中:CHAR_MIN,定义为<limits.h>,将具有以下值之一:0或SCHAR_MIN,这可以用来区分这两个选项。不管做出什么选择,char是与其他两种类型不同的类型,与这两种类型都不兼容。
打开App,查看更多内容
随时随地看视频慕课网APP