C语言中序列点的问题 100
书上说逻辑与是一个序列点,那么:if(a++>0&&a<10)……那从概念上理解,子表达式a++的副作用是在程序运行在&&前的瞬间还是&&后的瞬间完成的?...
书上说逻辑与是一个序列点,那么:
if(a++>0 && a<10)……
那从概念上理解,子表达式a++的副作用是在程序运行在&&前的瞬间还是&&后的瞬间完成的? 展开
if(a++>0 && a<10)……
那从概念上理解,子表达式a++的副作用是在程序运行在&&前的瞬间还是&&后的瞬间完成的? 展开
4个回答
展开全部
由于&&运算符的短路效应,所以必然是先对左测表达式求值,如果左侧表达式值为非零才会进行右侧表达式的求值
自增后缀运算符的副作用发生在左侧表达式求值后
自增后缀运算符的副作用发生在左侧表达式求值后
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
都不是,后自增是在当前的整条语句执行完以后再自增的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只要记住基本运算优先级就可解,单目运算(++、--)优于双目运算(a+b、c\d、e>f)优于逻辑运算,所以从基本逻辑上讲a++应该在&&前。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(a++>0 && a<10);//在条件判断中是把当前a变量的值和0比较,符合则结果为1,不符合结果为0。。然后变量a进行+1操作。
如果是++a是在判断前先对变量a进行+1操作,然后再判断条件是否符合。
a++是在判断后再对变量a本身进行+1操作。
所以++放在变量前和变量后,是不同的。一个是超前进行,一个是滞后进行。
对于程序,所有运行是按步骤运行一条语句运行完成后,继续运行下一条语句,每条语句完成功能都需要一定的时间,没有什么瞬间不瞬间的问题。。运行到哪一条语句,就执行这条语句的功能。。++只是一个语句步骤。
如果是++a是在判断前先对变量a进行+1操作,然后再判断条件是否符合。
a++是在判断后再对变量a本身进行+1操作。
所以++放在变量前和变量后,是不同的。一个是超前进行,一个是滞后进行。
对于程序,所有运行是按步骤运行一条语句运行完成后,继续运行下一条语句,每条语句完成功能都需要一定的时间,没有什么瞬间不瞬间的问题。。运行到哪一条语句,就执行这条语句的功能。。++只是一个语句步骤。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询