按位OR int和char

时间:2013-05-08 13:12:55

标签: c++ c

我知道int中的值小于16(不超过4位)。我想按位 - 或者它成char。我可以这样做:

c |= i;

还是取决于字节序?如果这是一个问题,那么:

c |= (char)i;

解决它?

4 个答案:

答案 0 :(得分:9)

在进行算术运算时,字节顺序永远不重要,只有在以某种其他方式处理值(大于1 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);