解析错了。第一个if(a!=1).执行的是else后面的
答案是7,是对的;
if(a!=1);else r=1;执行后r=1;
if(b==2) r+=2;else;执行后r=3;
if(c!=3) r+=3;else;执行后r=3;
if(d==4) r+=4;执行后r=7;
解析很正确:
#include
main()
{
int a=1,b=2,c=3,d=4,r=0;
if(a!=1)
; // 空语句,a==1,所以不被执行
else r=1; // a==1,所以被执行,r=1。
if(b==2) r+=2; // b==2,所以被执行,r=1+2=3
else
; // 空语句
if(c!=3) r+=3; // c==3,所以不被执行
else
; // 空语句
if(d==4) r+=4; // d==4,所以被执行,r=3+4=7;
printf("%d\n", r);
}