这几个连着的if有点不懂,刚刚学c,求解析

下列程序的运行结果是# 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是1吗?
还有就是能翻译一下这几个if else吗?

0为假,!0为真,
if()...else if()...为一对
后面if()...else()为另一对

请查看代码中的注释

int a , b , c , X ;
a = b = c=0, x =35;
 if ( !a ) //这个if和 else if其实都没用
  x --;
else if ( b ) 
  x ++; 

if ( c ) //决定x值得在这里, 如果c=0, x会被赋予3, 如果c!=0, x会被赋予4. 前面所有的操作给x赋的值都会被覆盖的
  x =3;
else 
  x =4;


printf ("% d ", x );