作业帮 > 综合 > 作业

C语言问题,我写了一个程序,但是很不理解为什么会有那样的输出结果,请大神帮忙讲解讲解.

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/23 03:18:46
C语言问题,我写了一个程序,但是很不理解为什么会有那样的输出结果,请大神帮忙讲解讲解.

程序如图所示,输出为a=7,b=7,<b=(b--)+3>=8,b=7.个人认为,<b=(b--)+3>=7,两个b中应该有一个等于5.


C语言问题,我写了一个程序,但是很不理解为什么会有那样的输出结果,请大神帮忙讲解讲解.
呵呵,问得一个好问题啊同学
printf函数执行顺序注意以下三点
①后面的计算按从右到左进行计算的
②输出时是从左往右输出的
③自增自减时要注意以下:
i++,i-- 时,i的值在printf()函数之后才会被刷新,在printf()函数中,i++,i-- 对i的值暂时不产生影响.(但是++i、--i则有影响)
至于你这个例子,就不用再多说了吧.
再问: 计算是从右往左的话,最后那个b的值不应该是5吗,而且,i--是在退出printf()函数后刷新,那么b=(b--)+3的值为8,正确,而第一个b的值应该也是8呀,它还没有退出printf函数
再答: ①计算时那个b确实是5,但是,显示的是输出时的值啊。。。
②这个是因为不是b--,是b=(b--)+3啊

你可以测个单独的b--试试,不理解再追问