C语言条件运算符详解:用法、求值规则及需注意的要点

条件运算符,又被称作三目运算符,只因在C语言里,它属于唯一那种,需要三个操作数的运算符。条件运算符的基本用法是下面这样的:

当有某种状况的情况下,是表达式1 的情况吗,还是表达式2 的情况呢?

对于条件运算符而言,它存在这样的求值规则,即要是 condition 的值是真,也就是非零值,那么整个表达式的值就会是以 expression1 的值来确定,反过来,要是 condition 的值不是真,而是假、零值,那么整个表达式的值就会按照以 expression2 的值来确定。

对于条件运算符而言,它能够让我们于一行代码当中去执行条件判断,并且返回相应的结果,通常是被用于替代那种简单的 if else 语句的。

例如求两个数中的最大值,用 if else 语句可以写作:

复制代码
if(a>b){
    max = a;
}else{
    max = b;
}

改用条件运算符以后的写法为:

复制代码
max = (a>b) ? a : b;

如下语句的意思是:要是 a 大于 b 这种情况成立,那么就将 a 当作条件表达式的结果,并且把这个结果赋值给 max;不然的话,就把 b 当作条件表达式的结果,进而赋值给 max。关于几点说明,就在使用条件表达式的时候,还需要留意下面这几点:

  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 );

这同样是条件表达式嵌套的状况,也就是说其中存在一个子表达式,它还是一个条件表达式。综合起来的示例,示例1是要运用条件运算符去输出两个数里的较大的那个数。

复制代码
#include 
 
  
int main() {
    int a, b;
    
  printf("输入两个整数:");
    
  scanf("%d %d", &a, &b);
    printf("较大的数字是:%d\n", a > b ? a : b);
    return 0;
}
 

运行结果:

复制代码
输入两个整数:15 73↙
较大的数字是:73

示例2:使用条件表达式来决定调用哪个函数。

复制代码
#include 
 
  
void success(){
    puts("Succeed!");
}
void fail() {
    puts("Failed!");
}
int main() {
    int isOK = 1;  // 1 表示真,0 表示假
    isOK ? success() : fail();
    return 0;
}
 

运行结果:

复制代码
Succeed!

本文详细阐释了C语言条件运算符的常见使用方式,附带了几个以供演示的示例。对于简单的判断情形而言,条件运算符是个不错的选择;然而对于复杂的逻辑状况来讲,运用传统的if else语句或许更为相宜。

相关推荐
超级小星星9 小时前
C 语言结构体内存对齐深度解析:从概念到实战
c语言·开发语言
笨笨饿10 小时前
74_SysTick滴答定时器中断
c语言·开发语言·人工智能·单片机·嵌入式硬件·算法·学习方法
科芯创展10 小时前
XZ4058B/C,20V,外置MOS,8.4V/8.7V开关充电芯片 宽范围电源电压:8.9V~20V-(电池充电电压:8.4V/8.7V)
c语言·开发语言
Aurorar0rua11 小时前
CS50 x 2024 Notes C -11
c语言·开发语言·学习方法
Dlrb121111 小时前
C语言-指针
c语言·开发语言
12.=0.13 小时前
【stm32_9.2】FreeRTOS的任务管理:任务策略,调度器启用,任务创建、删除、挂起、恢复
c语言·stm32·单片机·嵌入式硬件
谙弆悕博士14 小时前
【附C源码】二叉搜索树的C语言实现
c语言·开发语言·数据结构·算法·二叉树·项目实战·数据结构与算法
开发者联盟league15 小时前
在cursor中配置c/c++开发环境
c语言·开发语言·c++
『昊纸』℃15 小时前
C语言简介
c语言·操作系统·编程语言·应用领域·历史发展
刃神太酷啦16 小时前
《网络基础全链路深度解析:从Socket编程到HTTPS与TCP/UDP内核机制》----《Hello Linux!》(25)
linux·运维·c语言·网络·c++·tcp/ip·https