所以我知道有符号和无符号int之间的区别在于,有一些用于表示数字是正数还是负数,但这如何适用于char?角色怎样才能是积极的还是消极的?
AnT*_*AnT 123
C语言中没有专用的"字符类型".char
是整数类型,与(在这方面)相同int
,short
以及其他整数类型.char
恰好是最小的整数类型.因此,就像任何其他整数类型一样,它可以是有符号或无符号的.
确实(顾名思义)char
主要用于表示字符.但是C中的字符由它们的整数"代码"表示,所以在使用整数类型char
来实现该目的的事实中没有什么不寻常的.
char
和其他整数类型之间唯一的一般区别是plain char
通常不是同义词signed char
,而对于其他整数类型,signed
修饰符是可选的/隐含的.
Sim*_*low 42
我略微不同意上述情况.该无符号字符只是意味着:使用最显著位,而不是执行算术运算时,将它视为对+/-号位标志.
如果你使用char作为数字,这很有意义:
typedef char BYTE1;
typedef unsigned char BYTE2;
BYTE1 a;
BYTE2 b;
Run Code Online (Sandbox Code Playgroud)
对于变量a,只有7位可用,其范围是(-127到127)=(+/-)2 ^ 7 -1.对于变量b,所有8位都可用,范围是0到255(2 ^ 8 -1).
如果使用char作为字符,编译器将完全忽略"unsigned",就像从程序中删除注释一样.
DrA*_*rAl 21
有三种char类型:(普通)char
,signed char
和unsigned char
.任何char通常都是一个8位整数*,从这个意义上说,a signed
和unsigned char
一个有用的含义(通常等同于uint8_t
和int8_t
).当用作文本意义上的字符时,使用a char
(也称为普通字符).这通常是一个signed char
但可以由编译器以任一方式实现.
*从技术上讲,char可以是任何大小,只要sizeof(char)
是1,但它通常是8位整数.
小智 14
表征是一样的,意思是不同的.例如,0xFF,它都表示为"FF".当它被视为"char"时,它是负数-1; 但它是255无符号.当涉及到位移位时,由于符号位没有移位,所以它是一个很大的区别.例如,如果你向右移动255位,它将得到127; 向右移"-1"将无效.
sup*_*cat 10
'signed char'是一个带符号的值,通常小于,并且保证不会大于'short'.'unsigned char'是无符号值,通常小于,并且保证不大于'short'.没有有符号或无符号限定符的类型'char'可以表现为有符号或无符号字符; 这通常是实现定义的,但有几种情况不是:
有两种方言的部分原因是"C"(其中'char'被签名的那些,以及那些未签名的方言)是有些实现'char' 必须是无符号的,而其他的必须签名.
归档时间: |
|
查看次数: |
233154 次 |
最近记录: |