C语言,while的括号里面不应该执行两次吗???

如题所述

解:执行一次。

知识点:

    while是计算机的一种基本循环模式。当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。while语句的一般表达式为:while(表达式){循环体}。

    a++和++a 都属于自增运算符,区别是对变量a的值进行自增的时机不同。a++是先进行取值,后进行自增。++a是先进行自增,后进行取值。

程序开始,首先执行while表达式(--b,c--,a--)

    表达式从左往右执行,为真则继续执行。--b(先自减后取值),即b=1为真;c--(先取值后自减),即c=2为真;a--(先取值后自减),即a=1为真;所以表达式为真,进入循环体,就是执行输出三个变量的值。

    第一次循环执行后各变量的值为,b=1,c=1,a=0。

    执行循环体,输出a=0,b=1,c=1。

    第二次循环,执行表达式(--b,c--,a--);--b(先自减后取值),即b=0,为假,不满足条件,跳出循环。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-08-14
C语言,while的括号里面的判断是执行两次,但是循环体只执行一次的。所以应该选择答案D的。本回答被提问者采纳
第2个回答  2020-08-14
你这while里是逗号表达式,从左向右求值,以最右的值为整个表达式的值,当在进行a--判断的时候,因为是后减,所以a此时还为1(在C里非0即为真),所以满足条件,会执行下面的printf,注意,此时a/b/c均减1了,所以输出结果为0,1,1,第二次循环时,同样因为a--,此时的a为0,整个表达式为假,所以不再执行了printf了,答案为D。
当然while的判断确实是进行两次的,第二次判断为假才不执行printf,如果你在最后面再加一行
printf("\n%d,%d,%d",a,b,c);
就能看到第二次判断后,abc分别为-1,0,0

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网