如何在C语言中对char类型字符正确使用OR运算?
问题1:为什么只有输入'c'时才会输出星号
你代码里写的'a' | 'b'是按位或运算,不是你想要的「逻辑或判断」:
- 字符'a'的ASCII值是97,二进制为
01100001 - 字符'b'的ASCII值是98,二进制为
01100010 - 两者按位或的计算结果是
01100011,对应的ASCII值是99,正好是字符'c'的编码
所以你写的input[i] == ('a' | 'b')等价于input[i] == 'c',自然只有输入'c'时会触发打印逻辑。
问题2:OR运算的正确使用方式
C语言中判断「满足A条件或者满足B条件」,需要用双竖线的逻辑或运算符||,且两个判断条件要分开写,正确代码如下:
for(int i=0;i<strlen(input);i++) { if (input[i] == 'a' || input[i] == 'b') { printf("*"); } }
注意要区分两种「或」的使用场景:
- 单竖线
|是按位或,用于对整数的二进制位做运算 - 双竖线
||是逻辑或,用于多个布尔条件的或判断
内容的提问来源于stack exchange,提问作者DrRelish
相关产品推荐
相关产品推荐

