【C语言】条件操作符和逗号表达式

举报
謓泽 发表于 2023/09/20 20:51:34 2023/09/20
【摘要】 【C语言】条件操作符和逗号表达式

🎓条件操作符

exp1 ? exp2 : exp3 分别为 表达式1 ? 表达式2 :表达式3
  • 条件操作符也被称之为三目操作符,唯①一个具有三个数的操作符。如下例子:
if(a>b)
{
    max = a;
}
else
{
    max = b;
}

不过,C语言提供了一种更加简单的方法,叫做条件运算符,语法格式为:

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

条件运算符是C语言中唯一的一个三目运算符,其求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常用于赋值语句之中。

上面的 if else 等价于:

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

该语句的语义是:如a>b,则把a赋予max,否则把b赋予max。 


♦逗号表达式 

格式:exp1,exp2,exp3,...expn
  • 逗号表达式,就是用逗号隔开的多个表达式。逗号表达式,从左向右依次执行,整个表达式的结果是最后的表达式的结果。这是一个很特殊的表达式,如下所示:
#include <stdio.h>
int main(void)
{
	int a, b=0, c=0;
	int d = (c = 1,a = 1, b -= 2, c += 2);
	printf("%d\n", d);

    return 0;
}

从上面的例子运行出的结果为:3结果有可能会受到前面代码的影响

下面来做一道练习题,主要考察的是自增自减以及逗号表达式

#include<stdio.h>
int main(void)
{
	int a, b, c;
	a = 4;
	c = ++a;
	b = ++c, c++, ++a, a++;
	b += a++ + c;
	printf("a = %d -- b = %d -- c = %d\n", a, b, c);
	return 0;
}

在上面代码当中需要注意:逗号表达式的规则,以及自增运算符的前置与后置区别。 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。