C语言if 语句


用 if 语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。


if 语句的三种形式

  1. 第一种形式为基本形式:if
 if(表达式) 语句

其语义是:如果表达式的值为真,则执行其后的语句, 否则不执行该语句。
在这里插入图片描述

  1. 第二种形式为: if-else
  2. 第二种形式为: if-else
if(表达式)
语句 1else
语句 2

其语义是:如果表达式的值为真,则执行语句 1,否则执行语句 2 。
在这里插入图片描述

  1. 第三种形式为 if-else-if 形式
    前二种形式的 if 语句一般都用于两个分支的情况。 当有多个分支选择时,可采用if-else-if 语句,其一般形式为:
if(表达式 1)
语句 1else if(表达式 2)
语句 2else if(表达式 3)
语句 3;
…
else if(表达式 m)
语句 m;
else
语句 n;

其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个 if 语句之外继续执行程序。 如果所有的表达式均为假,则执行语句 n。然后继续执行后续程序。
在这里插入图片描述

if 语句的嵌套

当 if 语句中的执行语句又是 if 语句时,则构成了 if 语句嵌套的情形。
其一般形式可表示如下:
if(表达式)
if 语句;
或者为
if(表达式)
if 语句;
else
if 语句;
在嵌套内的 if 语句可能又是 if-else 型的,这将会出现多个 if 和多个 else 重叠的情
况,这时要特别注意 if 和 else 的配对问题。
例如:

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

其中的 else 究竟是与哪一个 if 配对呢?
应该理解为:

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

还是应理解为:

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

为了避免这种二义性,C语言规定,else 总是与它前面最近的 if 配对,因此对上述例子应按前一种情况理解。

main(){
	int a,b;
	printf("please input A,B: ");
	scanf("%d%d",&a,&b);
	if(a!=b)
		if(a>b) 
			printf("A>B\n");
		else 
			printf("A<B\n");
	else printf("A=B\n");
}

在这里插入图片描述

条件运算符和条件表达式

如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。
条件运算符为?和:,它是一个三目运算符,即有三个参与运算的量。
由条件运算符组成条件表达式的一般形式为:

表达式 1? 表达式 2: 表达式 3

其求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 2 的值作为整个条件表达式的值。
条件表达式通常用于赋值语句之中。
例如条件语句:

if(a>b) max=a;
else max=b;

可用条件表达式写为

max=(a>b)?a:b;

使用条件表达式时,还应注意以下几点:

  1. 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
    因此
max=(a>b)?a:b

可以去掉括号而写为

max=a>b?a:b
  1. 条件运算符?和:是一对运算符,不能分开单独使用。
  2. 条件运算符的结合方向是自右至左。
    例如:
a>b?a:c>d?c:d

应理解为

a>b?a:(c>d?c:d)

这也就是条件表达式嵌套的情形,即其中的表达式 3 又是一个条件表达式。

main(){
	int a,b,max;
	printf("\n input two numbers: ");
	scanf("%d%d",&a,&b);
	printf("max=%d\n",a>b?a:b);  //表达式输出2者最大的数	
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼桨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值