网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月21日漏签0天
c语言吧 关注:801,819贴子:4,375,744
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 25回复贴,共1页
<<返回c语言吧
>0< 加载中...

关于C语言逻辑表达式短路求值的疑问

  • 只看楼主
  • 收藏

  • 回复
  • victory314
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

图中的b = c是用括号括起来的,括号运算符优先级是高于<的,我理解if里面的条件表达式是先计算b = c(b的值更新为3),然后b = c表达式的值为3,3是非0为真,因为是或运算,所以a < 2编译器判断不会判断,此时执行打印b的值应该是3啊,为什么是2?求c语言高手解答下我的疑惑


  • aaaaaaa421
  • 葱の帝球
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
优先级决定表达式如何结合,而不是决定先执行哪个表达式


2026-01-21 16:17:11
广告
不感兴趣
开通SVIP免广告
  • 花空落雨
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
因为括号的优先级最高所以它会执行里面的b=c但是b不等于c,你又用了逻辑运算所以它会执行if里面的条件a小于2是正确的||只要有一个对的话条件就会成立


  • 花空落雨
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
b的值不会因为你在条件表达式里面更改if的条件式只会判断你是否符合条件,如果符合就执行if里面的程序,如果不符合就跳过


  • 诗和远方
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
if里面b=c不是赋值


  • 蓝蓝的小号
  • 团子家族
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
‖不是加减乘除,括号对优先级没影响(除非有多个‖或&&时把某个‖或&&括起来)


  • 查干湖发个呵
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
就是判断条件里面a<2成立之后,结果为真,后面b=c就不会运行,而且你这个后面应该是判断条件b==c,而不是赋值。


  • victory314
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
还是没有一个严谨的回答,有的代码都没仔细看。。。


2026-01-21 16:11:11
广告
不感兴趣
开通SVIP免广告
  • 独眼红纹蝎船长
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
就是三楼说的,还是先算的或的左边


  • victory314
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
按上面给位所说的话,为什么这里括号运算符不作数呢?


  • Muy-poly
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
短路不是单纯的运算而是特殊处理。你可以看做一个if语句, a || b就是 a ? 1 : b


  • victory314
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谁能从汇编的角度解释下?


  • Friend
  • 帕秋莉糕
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
或运算是左结合,先执行左边的为1就不执行右边的了


  • 比较复杂的用名
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
把b=c与a<2换一下


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 25回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示