关于signed和char关键字的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 03:52:03
我的C++书上这么写:
signed和unsigned修饰符告诉编译器怎样使用整数类型和字符的符号位(浮点数总含有一个符号)。unsigned书不保留符号,因此有一个多余的位可用,所以它能存储比signed数大两倍的正数。singed是默认的,只有char才一定要使用signed;char可以默认为signed,也可以不默认为signed。通过规定signed char,可以强制使用符号位。
请问这段话末尾的“也可以不默认为signed”与“可以强制使用符号位”是什么意思?
关于tanyuguo的回答,我有一点不明白:首先我学的C语言中char的取值范围为0~255。你说标准ASCII码只用了低7位的话,意思是说char这个类型的变量本来就会浪费掉一位么?无论signed还是unsigned都没有区别?
一般在什么情况下会强制让char使用符号位?

char的实际值是字符的ASCII码,标准ASCII码是0-127,只用了低7位,所以有符号,无符号没什么影响.

在很多编译器里,比如 vs , char类型到底是等于 signed char还是 unsigned char,这个是可以在编译选项里设置的, 所以那书上说也可以不默认是signed。

强制使用符号位就是如果你类型明确写 signed char,那么无论编译选项怎么选得, 它总是有符号得