C语句中涉及到条件判断时的情况分析
C语言中的很多语句在执行过程中会涉及到条件的判断,如 if语句、switch语句、while语句、for语句等。而作为条件载体的可以是常/变量、算术表达式、关系表达式、逻辑表达式和赋值表达式。这些载体的值(即0或非0)即代表着命题的真假,进而决定了语句是否执行。
注意事项1.
作为判断条件的语句,会影响变量的值
例1
#include<stdio.h>
void main()
{int a=1;
if(a++);
printf ("%d",a);
}
注意事项2.
在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。
1. a&&b&&c型
2. a||b||c型
例2
#include<stdio.h>
void main()
{int a=0,b=1,c=2;
if(c++||a&&b++);
printf("%d%d%d",a,b,c);
}
注意事项3.
Switch语句中的条件判断问题:当以变量的值作判断条件时,if语句中以其值是否为0决定语句的执行情况,而在switch语句中即使switch后的表达式值为0其分支也可能执行(只要包括case0),另外每个case的常量表达式只起语句标号作用,执行switch语句是根据switch后面表达式的值找到匹配人口标号,开始执行。
Switch(表达式)
{case常量表达式1:语句1
case常量表达式2:语句2
...
case常量表达式n:语句n
default:语句n+1}
例3
(1)
#include<stdio.h>
void main()
{int a=0;
if(a++)
printf("%d",a);
(2)
#include<stdio.h>
void main()
{int a=0;
switch(a++)
{case 0:printf("%d",a);break;
case 1:printf("%d",++a);}
}