C语言中序列点的问题 100

书上说逻辑与是一个序列点,那么:if(a++>0&&a<10)……那从概念上理解,子表达式a++的副作用是在程序运行在&&前的瞬间还是&&后的瞬间完成的?... 书上说逻辑与是一个序列点,那么:
if(a++>0 && a<10)……
那从概念上理解,子表达式a++的副作用是在程序运行在&&前的瞬间还是&&后的瞬间完成的?
展开
 我来答
shine1991
科技发烧友

2019-02-24 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
由于&&运算符的短路效应,所以必然是先对左测表达式求值,如果左侧表达式值为非零才会进行右侧表达式的求值
自增后缀运算符的副作用发生在左侧表达式求值后
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一剑出血
高粉答主

2019-02-24 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
都不是,后自增是在当前的整条语句执行完以后再自增的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5fb4bfc
2019-02-24
知道答主
回答量:42
采纳率:50%
帮助的人:8.9万
展开全部
只要记住基本运算优先级就可解,单目运算(++、--)优于双目运算(a+b、c\d、e>f)优于逻辑运算,所以从基本逻辑上讲a++应该在&&前。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bj_jp996e49a
2019-02-24 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:78%
帮助的人:2576万
展开全部
if(a++>0 && a<10);//在条件判断中是把当前a变量的值和0比较,符合则结果为1,不符合结果为0。。然后变量a进行+1操作。
如果是++a是在判断前先对变量a进行+1操作,然后再判断条件是否符合。
a++是在判断后再对变量a本身进行+1操作。
所以++放在变量前和变量后,是不同的。一个是超前进行,一个是滞后进行。
对于程序,所有运行是按步骤运行一条语句运行完成后,继续运行下一条语句,每条语句完成功能都需要一定的时间,没有什么瞬间不瞬间的问题。。运行到哪一条语句,就执行这条语句的功能。。++只是一个语句步骤。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式