您可以为unsigned char分配什么值?
假设函数需要返回位模式00100010。
我想从右边的第5位返回这个模式。
这有效吗?
该function采用代表00100010的参数settings
。
unsigned char mask = 20; return mask | settings;
或者是否无法将值20
分配给unsigned char
?
您可以为
unsigned char
分配什么值?
最小值为0,因为unsigned char
是一些无符号整数类型。
最大的值是
: UCHAR_MAX
UCHAR_MAX
至少为255,有些功率为2 – 1,如UCHAR_MAX
等。通常为255。
如果将超出此范围的整数值分配给unsigned char
,则通过在范围内添加/减去UCHAR_MAX + 1
来减小该值。
以下代码没问题,但不清楚20是否是需要的掩码或hex0x20。
unsigned char mask = 20; // bits 0001 0100 // or unsigned char mask = 0x20;// bits 0010 0000
注意,二进制模式0010_0010 2是34 10或22 16 。
我发现rsp的答案有点令人困惑。 所以让我清楚这一点。
像'a'
这样'a'
字符只是根据字符表对整数的解释。 例如,根据ascii表'a' == 97
此语句为true。
所以你可以自由地将一个整数写入(un)signed char
。 它基本上是一样的。
如果使用printf("%c\n",var)
则将int
参数转换为unsigned char
,并写入生成的字符,如果执行var = 'a'
或var = 97
无关紧要
编辑:使用标准thx到chux的描述
保证unsigned char
至少有8位,因此表示二进制100000的值在该类型的范围内,但应该用hex写:
unsigned char mask = 0x20; return mask | settings;
或者干脆:
return 0x20 | settings;
请注意,如果settings
为二进制值00100010( 0x22
),则它已经设置了第5位。