发布网友 发布时间:2022-04-23 22:40
共4个回答
热心网友 时间:2022-05-03 08:20
第一次for循环:a++首先判断a最后在执行++(如果是++a,则先进行++,在判断a),那么a=-1,然后b也一样,先判断b,b=2,a和b都不为0,那么条件满足,进入for循环,进入之前,先进行a++和b++,所以第一遍打印出a = 0,b = 1.
第二次进入for循环,先判断a,此时a==0,在逻辑与运算中,前一个表达式不符合条件则不再判断其他表达式了,所以此时就调出for循环了,但在跳出for循环后还是会执行a++的,所以此时a=1,但是b++并没有被执行,还是等于1,所以答案是0,1,1,1
热心网友 时间:2022-05-03 09:38
a=-1,b=2; // a++&&b--的意思是先做a&&b的判断然后马上执行a加1和b减1
a&&b成立(a和b都不等于0,两个真进行逻辑与结果是真),a++;[a=0],b--;[b=1],前面条件成立开始循环: printf输出: 0,1
a&&b不成立(a等于0,逻辑与运算一方如果是假结果是假),a++;[a=1],由于计算机在进行逻辑与运算时,发现a等于0,因此立刻得到假的结果,逻辑与的后面条件不会被引入,因此跳过b--的执行,b的值不变,前面条件不成立结束循环
printf输出: 1,1
总输出: 0,11,1
热心网友 时间:2022-05-03 11:13
在bool值中0是False,其余值为True。
在逻辑运算符中,&&是与,只要一个不成立结果肯定是false,所以运行时算法有优化,当&&左边不成立的时候,逻辑式直接返回false,右边不会执行。
这个for语句,只有条件句,所以只要a++&&b--成立,就会一直执行。
for语句没有大括号,作用域只对下面一条语句起作用。
a++,b--,都是先取值再++--。
所以综上:
第一次for循环,a=-1,b=2,判断a++&&b--,先取a做判断,由于-1是Ture,再取b做判断,成立,之后执行a++,b--,本次循环执行完a=0,b=1。打印0,1。
第二次for循环,a=0,b=1,先取a做判断,再a++,由于0已经是False,后面的b--不执行,判断不成立,循环结束。本次循环执行完a=1,b=1
最后打印0,11,1。
热心网友 时间:2022-05-03 13:04
main()
{ int b=2;
for (;b<=6;b++)
{ if (b>4) break;
b++;
}
printf(“b=%d”,b);
}
我把多余的帮你去掉,你在看下。这应该一眼就能看出来吧!第一次循环后b=4;第二次由于b=4不大于4,所以b现在=6;当第三次b=6大于4,所以break;
跳出循环,然后printf(“b=%d”,b);