if(p[i]%2)的意识是:如果p[i]%2=1, 那么就执行if后面的语句;如果p[i]%2=0,那么不执行if后面的语句。因为任何数对2取余数,只能得到0或1,当P[i]为奇数的时候,p[i]%2=1,则执行;当P[i]为偶数的时候,p[i]%2=0,则不执行,而重新判断下一个p[i]。
if语句是指编程语言(包括c语言,C#,VB,汇编语言等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if的返回值为真或假,可以用bool型变量进行存储,占用一字节。
除2求余,无论什么正整数,其结果只有两个,就是0和1。这两个值在C语言中也代表boolean类型,这个if的意思就是p[i]是否为奇数。
如果p[i]能被2整除的话,说明 if(p[i]%2)为真,就执行 j+=p[i];
如果if不成立,则执行printf("%d\n",j);
结果是45,我也没懂