关于二级C

来源:百度知道 编辑:UC知道 时间:2024/06/06 03:58:35
#include<stdio.h>
main()
{int i,s=0;
for(i=1;i<10;i++)
if(!(i%2)&&!(i%3))s+=i;
printf("%d\n",s);
}
程序的输出结果是??
我觉得答案是3
但答案是6,请问问什么呢??详解哦~谢谢
请问1%2是余0还是直接余被除数1?
只要被除数比除数小就直接余被除数是么???

你那个算法算的应该是10以内的2和3的倍数之后,这些数是,0,6所以s=0+6=6
最后输出6,怎么会是三呢?
if(!(i%2)&&!(i%3))其中的i%2结果为i除2所得的余数,当i恰好被2整除时!(i%2)为真,!(i%3)也一样,当i恰好被3整除时为真。&&是逻辑运算符与。即当它两边的表达式都为真时才为真,由于!的优先级先于&&,所以要先算!(i%2)和!(i%3)再对它们的结果求与,也就是i既能被2整除又能被3整除时整个表达式为真,这时执行语句s+=i;s+=i就等价于s=s+i;
够详细吧。