我不确定为什么这段代码打印“h = 13”而不是“h = 2”。有没有人有想法?
#include <stdio.h>
int main() {
int j,h=1;
for(j=0;j<50;j++) {
if(j%6==1) continue;
h++;
if(j==7 || j==14 || j==21)
break;
}
printf("h=%d",h);
return 0;
}
答案 0 :(得分:3)
j = 0
if语句都没有返回值1时,h
会递增。j = 1
中的(j % 6 == 1)
时, 1%6会给出余数1 。语句j % 6
为真,因此,h 不递增。 ('%'是剩余运营商)j = 2
到j = 6
时,if语句都没有返回值1,因此h
会递增。j = 7
(j % 6 == 1)
时, 7%6会给出余数1 。语句j % 6
为真,因此,h 不递增。j = 8
到j = 12
时,if语句都没有返回值1,因此h
会递增。j = 13
(j % 6 == 1)
时, 13%6会给出余数1 。语句j % 6
为真,因此,h 不递增。j = 14
语句j == 14 is
true ,因此会执行break语句。 h会增加:j
= 0,j
= 2到j
= 6,j
= 8到j
= 12,{ {1}} = 14,总共12次。
总计12 + 1(j
)= 13