C语言条件运算符“?:”怎样应⽤?

news/发布时间2024/5/16 8:19:44

一、问题

        在程序中偶尔可见“ ?: ”运算符,怎样使⽤这个运算符呢,什么时候使⽤呢?

二、解答

        “ ?: ”叫做条件运算符,它是C语⾔中唯⼀⼀个三⽬运算符,所谓运算符的⽬,就是⼀个运算符和⼏个操作数相结合,例如“a++”,++是单⽬运算符。“3+2”、“a>b”、+和> 都是双⽬运算符。条件表达式的格式为:

测试表达式 ? 结果表达式1 : 结果表达式2

整体上叫做⼀个条件表达式。

        条件表达式的值:先求解“测试表达式”的值,如果其值为真,整个表达式的值是“结果表达式1”,否则是“结果表达式2”。例如:

a = 5;
b = 4;
c = a > b ? a : b;
printf("%d", c);

此时c的值为5。

上述 c=a>b?a:b 的功能与

if (a > b)c = a;
elsec = b;

        完全相同。由于条件运算符实现的功能与 if..else 语句完全相同,因此条件运算符在程序中很少⽤到。

条件运算符的优先级和结合性:

        条件运算符的优先级低于逻辑运算符“&&”和“1”,⾼于赋值运算符“=”,结合性从右向左。

优先级的举例:

x = a > = 0 && b > = 0 ? a * b : 0

以上表达式可理解为:

x = ((a > = 0) && (b >= 0) ? (a * b) : 0)

结合性的举例:

x = a > b && a > c ? a : b > c ? b : c

由结合性从右向左,以上表达式可理解为:

x = a > b && a > c ? a : (b > c ? b : c);

        在函数调⽤中,为了程序结构易于理解,条件运算符很少⽤到。但在宏调⽤中,由于条件运算符可以实现选择结构的功能,因此得到⼴泛应⽤。例如:

#define max(a, b) (a) > (b) ? (a) : (b)

三、总结

        从上例看,条件运算符写的程序⽐ if..else 语句要简单得多。因此,两种⽤法各有各的优点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/jVOH/3523.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

ARM服务器部署Kafka集群

安装前必备的条件是: (1)安装jdk(提供环境); (2)安装zookeeper(注册kafka信息); 需要这方面信息的可以查看我之前写的文档; 一.下载安装包 Kafka官网下载地址 Apache Kafka 根据自己需要下载相应的版本 目前最新的版本是3.6.1。 二.解压安装包 服务器上传下载好的kafk…

【vue】如何打开别人编译后的vue项目

文件结构如下,编译后的文件放在dist中。 dist的文件结构大约如下,文件名称随项目 1.新建app.js文件 const express require(express);const app express();const port 8080;app.use(express.static(dist));app.listen(port, () > console.log); …

Java 泛型

优质博文:IT-BLOG-CN 一、为什么要有泛型 【1】解决元素存储的安全性问题。 【2】解决获取数据元素时,需要类型强转的问题。 【3】可以统一数据类型,便于操作。 【4】将运行时的异常提前到了编译时,提高了效率。 【5】实现代码的…

已知路径点(x,y)系列坐标如何利用matlab中自带的函数求解曲率值

以Trucksim的路径为例 路径 坐标点 将路径点以mat格式存储在matlab中如下图 4.下面展示 matlab代码。 // 将Ref_Road_Points数据进行类型转化 yyreferencePathFrenet(Ref_Road_Points) //数据一共201个点 将s设置为列向量 s(1:201); kappacurvature(yy,s);注意matlab中这…

对Redis锁延期的一些讨论与思考

上一篇文章提到使用针对不同的业务场景如何合理使用Redis分布式锁,并引入了一个新的问题 若定义锁的过期时间是10s,此时A线程获取了锁然后执行业务代码,但是业务代码消耗时间花费了15s。这就会导致A线程还没有执行完业务代码,A线程…

我是怎么用静态IP代理为Google账号保驾护航的

我为何要使用到静态IP代理服务 我是一名IT从业者,在很多年前就加入了一家跨国软件公司,日常需要在全世界各地跟甲方沟通,负责的工作中重要的一块就是Google广告,为此公司还特意给配置了一台笔记本电脑。 目录 我为何要使用到静态…

会声会影2024视频编辑软件电脑版本下载

一、功能特点 会声会影是一款功能强大的视频编辑软件,它集合了视频剪辑、特效添加、音频处理、字幕制作等多种功能于一身。具体来说,其特点包括: 会声会影2024安装包下载如下: https://wm.makeding.com/iclk/?zoneid55677 直观易用的操作…

Polyspace静态检测步骤

Polyspace 是一个代码静态分析和验证的工具,隶属于MATLAB,用于检测代码中的错误和缺陷,包括内存泄漏、数组越界、空指针引用等。帮助开发团队提高代码质量,减少软件开发过程中的错误和风险。 1、打开MATLAB R2018b 2、找到Polys…

【论文阅读】ICASSP 2023 针对目标检测的无目标后门攻击

文章目录 一.论文信息二.论文内容1.摘要2.引言3.作者贡献4.主要图表5.结论 一.论文信息 论文题目: Untargeted backdoor attack against object detection(针对目标检测的无目标后门攻击) 论文来源: 2023-ICASSP(CCF…

Flutter(二):Row、Column 布局

MaterialApp 对于 MaterialApp,组件提供了一些默认的属性,如AppBar、标题、背景颜色等,你可以默认使用它们 import package:flutter/material.dart;void main() {runApp(const App()); }class App extends StatelessWidget {const App({super…

问题慢慢解决-通过android emulator调试android kernel-内核条件断点遇到的问题和临时解决方案

起因 在摸索到这个方案之后,mac m1调试aarch64 android kernel最终方案,就准备调试内核了,预备下断点的地方是 b binder_poll b ep_ptable_queue_proc b remove_wait_queue但是由于是android系统,上面三个函数会被频繁的触发&am…

基于PID控制器的直流电机位置控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 1. PID控制器原理 2. 位置控制环 5.完整工程文件 1.课题概述 基于PID控制器的直流电机位置控制系统。直流电机位置控制系统是工业自动化领域中的一个重要应用。为了实现精确的位置控制,常采…

3ds Max视频怎么渲染 3ds Max云渲染操作

在3ds Max软件中制作视频动画本质上是逐帧生成画面,并将这些连续帧串联起来创造出动态连贯的视觉效果。常见的视频帧率包括25 FPS(每秒帧数)、60 FPS、以及120 FPS等,帧率的提升可以使视频动画更加流畅。在实质上,视频渲染就是动画渲染&#…

什么是汽车抛负载Load dump

1.什么是抛负载 抛负载,英文为Load dump,是指断开电源与负载的瞬间,由于负载突变而引起电源电压急剧变化。在汽车电子领域,抛负载是指在蓄电池充电时,断开发电机与蓄电池的连接而引起发电机输出大电压尖峰&#xff0c…

使用React 18、Echarts和MUI实现温度计

关键词 React 18 Echarts和MUI 前言 在本文中,我们将结合使用React 18、Echarts和MUI(Material-UI)库,展示如何实现一个交互性的温度计。我们将使用Echarts绘制温度计的外观,并使用MUI创建一个漂亮的用户界面。 本文…

Ubuntu20.04 查看系统版本号

目录 uname -auname -vlsb_release -acat /etc/issuecat /proc/version uname -a 查看系统发行版本号和操作系统版本 uname -v 查看版本号 lsb_release -a 查看发行版本信息 cat /etc/issue 查看系统版本 cat /proc/version 查看内核的版本号

三、矩阵基本知识

目录 1. 理解 2、矩阵的直观感受 3、矩阵与向量 1. 理解 ①矩阵是一个向量组,由许多 行向量 和 纵向量 组成。 ②矩阵方程求解 用增广矩阵初等变换化为 E 。齐次/非齐次方程组 的解用 初等变化 化为 行最简阶梯型。 ③初步认为由多元一次方程组的系数组成&…

xhell链接虚拟机失败,只需检查以下三步配置

配置一个静态ip地址 然后很重要的一步:修改起始地址,范围要包括你选定机器的地址。 成功啦

uniapp开发微信小程序跳转到另一个小程序中

注意:一开始我的云上务工模块是单独的tabbar界面,但是小程序跳转好像不能直接点击tabbar进行,所以我将这里改成了点击首页中的按钮进行跳转 点击这里进行小程序跳转 目录 基础讲解 uniapp小程序跳转的两个方法 调用说明(半屏跳转…

加载arcgis切片服务网络请求有大量404错误

需求: 前端访问arcgis切片服务时,在网络请求中出现大量404(Not Found)错误,切片时设置了感兴趣区域,在感兴趣范围内请求切片时能够正常返回切片。 问题分析: 设置感兴趣区域切片的目的是减少站…
推荐文章