C语言-判断语句if-else

C语言中用来表示判断的语句是if-else语句,其一般形式为:

if(表达式)
	语句1;
else
	语句2;

其流程图如下:

C语言-判断语句if-else_第1张图片
该语句用于实现分支结构,根据表达式的值选择语句1或者语句2中的1条执行。从流程图中可以看到,首先求解表达式,如果表达式的值为“真”,则执行语句1;如果表达式的值为“假”,则执行语句2。 if-else语句常用于二分段函数的计算,例如上篇文章的函数: $$y=f(x) = \begin{cases} \frac{4x}{3} & x \leq 15 \\ 2.5x-10.5 & x > 15 \end{cases} $$ 用if-else语句写的代码段:
/*if-else语句*/
if (x <= 15){
	y = 4*x/3;	/* x<=15为真时执行 */
}else{
	y = 2.5*x-10.5; /* x<=15为假(即x>15)时执行*/
}

注:1、if后面小括号后不能有分号;例如if (x>3);这个是错误的,分号不能有,应该是if (x>3)
2、if-else语句中的表达式一般为关系表达式,例如if(x>3)或者if(x==2)等,同时也可以使用数字,例如if (1)或者if (0),但是需要注意,除0之外的所有数字都恒为"真",只有if (0)是假。
3、if-else语句中关系表达式中的==不能写赋值符号=,以为赋值在C语言中结果永远为"真",而且编译器不报错,在这种错误比较隐晦,不好查找。例如if(x==2)千万不能写成if(x=2)

if (x==2)
	语句1; //语句1仅当x==2时才会执行
if (x=2)
	语句2; //语句2无论x之前是什么值都会执行,赋值语句永远为真。	

为了避免出现写错的情况,可以改写成如下的语句:即将常数放在左边,因为不能给常数赋值,变量才可以赋值。这样写编译器会报错,有利于避免一些逻辑错误!

if (2==x)
	语句1;
if (2=x) //此时编译器会报错,常数是不能赋值的
	语句1;
报错:[Error] lvalue required as left operand of assignment(左值要是一个变量的左操作数)

3、if-else一般后面都跟着大括号,这样就会执行其中一条分支大括号内的所有语句;如果仅执行一条语句,可以不加大括号,但是此时仅紧接着表达式的第一条语句属于if语句管辖,else和if是一样的;但是else语句前必须有一个与之相对应的if语句,如果前面的if语句后不加大括号,并且跟了不只一条语句,此时编译器会报错。

代码示例1:
if (x >= 15)
{
	y = 4*x/3;
	printf("x>=15, y=%d\n", y); /*此时会执行大括号内的所有语句*/
}
else
{
	y = 2.5*x-10.5;
	printf("x<15, y=%d\n", y); /*此时会执行大括号内的所有语句*/
}
代码示例2:
if (x >= 15)
	y = 4*x/3; /*仅这一句是在if语句为假时不执行*/
printf("x>=15, y=%d\n", y); /*无论if语句为真为假,词句都会执行*/
代码示例3:
if (x >= 15)
	y = 4*x/3; 
	printf("x>=15, y=%d\n", y);
else /*这里编译器会报错,由于if语句没接大括号,且中间不只一条语句*/
	y = 2.5*x-10.5;
报错:[Error] 'else' without a previous 'if'else前需要一个if

你可能感兴趣的:(C语言,c语言)