for(i=1;i<=100;i++)
{x=i;
if(++x%2==0)//第一if
if(++x%3==0)//第二if
if(++x%7==0)//第三if
printf("%d",x);
}
在第一个判断时,由于是++x,而不是x++,所以再判断前先对x自加1,然后再判断自加后的x是否能被2整除。
例如当循环到i=19时,x=19,第一个if那里,先把++x,x=20,然后判断20%2==0,再进行下一个判断,先把++x,x=21,然后判断21%3==0,再进行下一判断,以此类推,如果有一个数使得三个判断都通过,那么久把最后的x输出,
意思就是有一个i,使得i+1%2==0,i+2%3==0,i+3++x%7==0,那么就把i+4输出
++x%2 == 0
首先计算++x使x的值自增1
然后用x和2进行取余运算,取得余数再和0判等,如果等,也就是x自增1之后可以被2整除则执行if内的语句,也就是跟着的下一个if,如果不能整除则直接下一次循环
后面的if同样计算,只是分别对3,对7取余
我想了一下,应该结果可以是28
就是i=25的时候,x=25,然后++x, x等于26了,可以被2整除,然后++x ,x又等于27了,可以被3带整除,再++x,x等于28,能被7整除
答案应该是28和70!三个if相当于串联,满足三个if才会执行printf语句,否则进入下一次循环, x%2==0为x先自增即x 1再对2取余判断余数是否为零。为零就满足否则不满足。