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

练习C语言决策控制时,对逻辑运算符计算结果存在困惑

C语言逻辑运算符计算结果解析

先看你给出的代码:

#include <stdio.h>

int main()
{
   int i=4, j=-1, k=0, w, x, y, z;
   w = i||j||k;
   x = i&&j&&k;
   y = i||j&&k;
   z = i&&j||k;

   printf("w = %d, x = %d, y = %d, z = %d", w,x,y,z);
   return 0;
}

运行输出:

w = 1, x = 0, y = 1, z = 1

下面逐个拆解每个变量的计算逻辑,核心要记住C语言的两个关键规则:

  • 非0整数都被视为逻辑真(值为1),0视为逻辑假(值为0)
  • 逻辑运算符支持短路求值:运算过程中一旦能确定最终结果,后续表达式就不会执行;同时&&的优先级高于||

1. w = i||j||k

||是逻辑或,只要任意一个操作数为真,结果就为真:

  • i的值是4(非0,真),所以无需计算后面的j和k,直接返回逻辑真,即w=1

2. x = i&&j&&k

&&是逻辑与,必须所有操作数都为真,结果才为真:

  • i和j都是非0(真),但k是0(假),所以整个表达式结果为逻辑假,即x=0

3. y = i||j&&k

因为&&优先级更高,先计算j&&k:

  • j是-1(真),k是0(假),所以j&&k结果为0(假)
  • 再计算i||0,i是4(真),所以最终结果为1,即y=1

4. z = i&&j||k

同样先算优先级更高的i&&j:

  • i和j都是非0(真),所以i&&j结果为1(真)
  • 再计算1||k,逻辑或只要有一个真就为真,所以不管k的值是多少,结果都是1,即z=1

内容的提问来源于stack exchange,提问作者DurYodhan Snipes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:50:22