如题所述
解:执行一次。
知识点:
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
当然while的判断确实是进行两次的,第二次判断为假才不执行printf,如果你在最后面再加一行
printf("\n%d,%d,%d",a,b,c);
就能看到第二次判断后,abc分别为-1,0,0