想问一下这个程序是不是有毛病啊

来源:百度知道 编辑:UC知道 时间:2024/06/14 21:47:39
main()
{
int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7) if(p[i]%2) j+=p[i];
printf("%d\n",j);
}
其中的if(p[i]%2)是不是有问题啊,我认为应该有个余数,应该改为if(p[i]%2==多少),可是这里没有余数,哪位大侠知道为什么吗?

A % B 的结果是A除以B的余数,比如
5 % 3 = 2

if语句的判断条件如果不是布尔量(true/false),而是整数的话,他会把所有非0值看做true,0看做false
所以
if(A%B)...
的结果是,如果A除以B的余数不为0,也就是不能整除,就执行后面的语句
如果余数为0,也就是能整除,则不执行后面的语句

没问题啊

p[i]%2是被2整除

它的意思是p[i]被2整除,是没有余数的

==的话,它的意思是相等于...

意思就是p[i]%2的余数存在

没有问题,if(p[i]%2)就是判断是否不被2整除,如果被2整除就返回0,if(表达式)就不成立。
你说的没有余数只是没有和固定的值比较,p[i]%2返回的就是对2取余的结果。

if()返回真和假,即1和0,而p[i]%2也只有两个可能:1、0;所以就直接可以不写了。