You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:27:01