网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数: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
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示