关于#else#的问题,如何解决?

下列程序的运行结果是# include < stdio . h > main (){
int a , b , c, x ;
a = b = c=0, x =35; if ( !a ) x --;
else if ( b ) x++; if ( c ) x =3;
else x =4;
printf ("% d ", x );

A .3
B .4
C .34
D .35
正确答案 B ,

a=0 !a为真 执行 x-- x=34
if elseif有一个执行,其余一个就不执行,此时b为真或者假都不执行 else if(b) 不执行
c=0 if(c) 不执行
if else 只执行一个,C为假,执行 else x=4 所以输出结果是x=4
可以结合代码看下注释理解

  • ```c
    int a, b, c, x;
    a = b = c = 0, x = 35;
    if (!a) x--;// a为0,!a为真,执行x--;此时x等于34
    else if (b) x++; // if elseif有一个执行,其余一个就不执行,此时b为真或者假都不执行
    if (c) x = 3; // if else 只执行一个,C为假,执行 else x=4 所以输出结果是x=4
    else x = 4;

```

a=0,!a就是不等于0,那么第一个就是真 执行 x=34。
b,c都等于0,if不执行还函数。
输出的结果为4的原因是
多个 if语句同时执行 输出的是最后一个