我知道int
中的值小于16(不超过4位)。我想按位 - 或者它成char
。我可以这样做:
c |= i;
还是取决于字节序?如果这是一个问题,那么:
c |= (char)i;
解决它?
答案 0 :(得分:9)
char
)时才会很重要,例如,当使用字符串指针遍历保存较大值的缓冲区时。
在你的情况下,没有必要施放,自动算术推广将确保它一切正常。代码:
char c = 0;
int i =3;
c |= i;
相当于
c = c | i;
表达式将计算为int
,然后转换回来进行存储。
答案 1 :(得分:3)
它与字节序无关。 c |= i;
只会有效。
答案 2 :(得分:0)
我更喜欢这样做,如果目的地比源更宽(有更多位),它可以防止符号扩展:
c = c | (0x0f & i);
它还可以提醒源中哪些位是要提取的目标位。
答案 3 :(得分:-3)
最好使用c |= (char)(i);