为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C C++
qq_笑_17 2019-06-06 13:14:52
在默认情况下,char是签名还是未签名?在“C的完整参考”一书中提到char默认情况下没有签名。但是我正试图用GCC和VisualStudio来验证这一点。它把它当作签名默认情况下。哪一个是对的?
查看完整描述

3 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

这本书错了。标准没有指定是否普通。char是签名还是未签名。

实际上,标准定义了三种不同的类型:charsigned char,和unsigned char..如果你#include <limits.h>然后再看看CHAR_MIN,你可以找出charsignedunsigned(如果CHAR_MIN值小于0或等于0),但即便如此,三种类型是不同的。就标准而言。


查看完整回答
反对 回复 2019-06-06
?
PIPIONE

TA贡献1829条经验 获得超9个赞

正如Alok所指出的,标准将由实现决定。

对于GCC,默认为签名,但可以用-funsigned-char注:对于android ndk中的GCC,默认为无签名。..您还可以显式地使用-fsigned-char.

在msvc上,默认的签名,但您可以用/J.


查看完整回答
反对 回复 2019-06-06
?
慕斯王

TA贡献1864条经验 获得超2个赞

C99 N 1256草稿6.2.5/15“类型”说明了类型的符号性char:

实现将char定义为具有与签名字符或无符号字符相同的范围、表示形式和行为。

在脚注中:

CHAR_MIN,定义为<limits.h>,将具有以下值之一:0SCHAR_MIN,这可以用来区分这两个选项。不管做出什么选择,char是与其他两种类型不同的类型,与这两种类型都不兼容。


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 445 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信