vlambda博客
学习文章列表

C语言:关于“条件”的常考题型

本文涉及的 条件 ,指的是if、for、while等所涉及的条件,例如 if( b>c ),while( 3 ),for(   ; a<=5  ;    )......这些条件都具有相同作用,常考题型如下:

一、关系类

例1:int a=1,b=2,c=3;

        if(b>c) printf("b大于c");

        else  printf("b小于c");

结果:b小于c

此类题型较简单,直接比较关系型条件所涉及的变量的大小即可。

但是需要注意条件(c>b>a)这种形式,很显然,在数学关系中,c>b>a是成立的,但是C语言中就要视情况而定。

对于条件c>b>a,C语言是分布计算的,先计算c>b,返回结果再与a进行比较。c>b结果是1,那么1在与a进行比较,1>1是错误的,所以条件c>b>a是错误的。

二、赋值、数值型

例2:int a;

while(a=125)

printf("%d",a);

}

结果:无限输出125

例3:

int a=125;

while(a)

printf("%d",a);

}

结果:无限输出125

解析:赋值、数值型条件,记住一句话:所有非零的数,都看做条件正确,只有0才看错条件错误。a=125,所以条件是正确的,会无限输出a的值。

C语言:关于“条件”的常考题型

三、逻辑运算型

例4:以下程序段的输出结果是

int a=-3,b=-4;

if(++a&&b++)

printf("%d,%d",a,b);

结果:-2,-3

解析:条件(++a&&b++),++a,a+1之后再使用a(即使用-2),-2为非零的数,所以b++要执行(直接使用b的值,即-4),整个条件转化为 1&&1,所以条件正确。a,b在条件中都执行了一次自增,所有a变成-2,b变成-3.

逻辑运算型条件,应注意短路性问题(可参考文章:)。

四、“等价”型

例5:填空,语句while(!e);中的条件!e等价于()

答案:!e!=0

解析:在C语言中,涉及条件等价的,其实就是指条件什么时候正确,这样就转化成了数值型条件,很显然,不等于0就是正确的条件。再举个例子while(e);中的条件e,等价于e!=0.

春考有约,你与大学的约定