c - C 中的 OR 运算符不起作用

标签 c

我不明白为什么下面代码中最后的 printf 没有打印 255。

char c;
c = c & 0;
printf("The value of c is %d", (int)c);
int j = 255;
c = (c | j);
printf("The value of c is %d", (int)c);

最佳答案

在大多数实现中,char 类型是有符号的,因此它的范围从 -128127

这意味着,11111111(用二进制表示的255)等于-1。 (因为它表示为存储在 two's complement 中的值)

要获得您期望的结果,您需要将 c 声明为 unsigned char,如下所示:

unsigned char c = 0;
int j = 255;
c = (c | j);
printf("The value of c is %d", (int)c);

关于c - C 中的 OR 运算符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7214835/

相关文章:

c++ - FSEvent 无法在根上下文 : Error: FSEventStreamCreate: _FSEventStreamCreate: ERROR: watch_path() failed for 中创建流

c++ - 如何使用mmap和shm_open在多个独立进程之间共享内存

c - 在 Eclipse 中使用适用于 C 的 Azure IoT 插件

c - 如何使用带有数字和单词的条件

c - shell如何扩展*.c?

c - 将数组中的十六进制转换为ascii,以便在C语言中进行比较

c - 我想在使用写入功能时显示整数

c - 如何使用c语言将.csv文件中的数据读取到多维数组?

c - 使用递归查找数组中目标数字第一次出现的位置

c - 在 window/openGL 上显示的图像已损坏