C语言之三目运算符---学习笔记
首先从一段代码说起:
if(Cnt_Worktostandby >((g_SaftyConfig.bit.FreChgDisPowerEnable||g_SaftyConfig.bit.VGridDeratingChargeEnable)?45000:1500))
这里面就涉及到一个很基本的C语言的三目运算。分解开来就是如果g_SaftyConfig.bit.FreChgDisPowerEnable||g_SaftyConfig.bit.VGridDeratingChargeEnable)为真,则后面的括号的整体就取45000,如果g_SaftyConfig.bit.FreChgDisPowerEnable||g_SaftyConfig.bit.VGridDeratingChargeEnable)为假,则取1500.
下面是一些关于三目运算的笔记。
笔记的主体来自blog:
https://www.cnblogs.com/jialiangliang/p/5990581.html
三目运算符
语法:
表达式1 ? 表达式2 : 表达式3;
语义:
先执行表达式1,执行完毕,表达式1的结果如果为真,那么执行表达式2,并且这个整体的运算式的结果是表达式2的结果,否则执行表达式3,运算式的结果是表达式3的结果。
跟
if(表达式1){
表达式2;
}else{
表达式3;
}
用一个口水化来表达三目表达式:
表达式1 ? 表达式2 : 表达式3;
表达式1成立吗?成立执行表达式2,否则执行表达式3
所以,在当需要使用
if(条件句)
{表达式1;
}
else
{表达式2;
}
的时候,就可以使用三木运算使代码尽可能的简洁美观了。
这个时候就应该是
(条件句)?(表达式1):(表达式2)
比如很多时候会遇到如果某个变量大于0,则不变,如果小于0,则取反。除了可以使用abs和fabs等绝对值函数,或者if判断,还可以用三目运算。
eg:
g_i32ExternalPvPower = getCANMessage(CAN_RX_MSG_OBJ);
g_i32ExternalPvPower = g_i32ExternalPvPower*0.1; //单位转换成W;
if(g_i32ExternalPvPower < 0)
{g_i32ExternalPvPower = -g_i32ExternalPvPower;
}
还可以写成:
g_i32ExternalPvPower = (g_i32ExternalPvPower>0)?g_i32ExternalPvPower:(-g_i32ExternalPvPower);
or
g_i32ExternalPvPower = g_i32ExternalPvPower>0?g_i32ExternalPvPower:-g_i32ExternalPvPower;
C语言之三目运算符---学习笔记相关推荐
- 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)
学习者:骆栢维 题目来源:生信基石之R语言 中级10 个题目:http://www.bio-info-trainee.com/3750.html 备注:本文为笔者学习健明老师GitHub答案代码的学习 ...
- 《Go语言圣经》学习笔记 第十一章 测试
<Go语言圣经>学习笔记 第十一章 测试 目录 go test 测试函数 测试覆盖率 基准测试 剖析 示例函数 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语 ...
- 《Go语言圣经》学习笔记 第十章 包和工具
<Go语言圣经>学习笔记 第十章 包和工具 目录 包简介 导入路径 包声明 导入声明 包的匿名导入 包和命名 工具 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. G ...
- 《Go语言圣经》学习笔记 第九章 基于共享变量的并发
<Go语言圣经>学习笔记 第九章 基于共享变量的并发 目录 竞争条件 sync.Mutex互斥锁 syn.RWMutex读写锁 内存同步 syn.Once初始化 竞争条件检测 示例:并发的 ...
- 《Go语言圣经》学习笔记 第八章 Groroutines和Channels
<Go语言圣经>学习笔记 第八章 Groroutines和Channels 目录 Goroutines 实例:并发的Clock服务 实例:并发的Echo服务 Channels 并发的循环 ...
- 《Go语言圣经》学习笔记 第六章 方法
<Go语言圣经>学习笔记 第六章 方法 目录 方法声明 基于指针对象的方法 通过嵌入结构体来扩展类型 方法值和方法表达式 示例:Bit数组 封装 注:学习<Go语言圣经>笔记, ...
- 《Go语言圣经》学习笔记 第五章函数
<Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...
- 《Go语言圣经》学习笔记 第四章 复合数据类型
<Go语言圣经>学习笔记 第四章 复合数据类型 目录 数组 Slice Map 结构体 JSON 文本和HTML模板 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. ...
- 《Go语言圣经》学习笔记 第三章 基础数据类型
<Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...
最新文章
- 黑盒测试--因果图法
- Linux疑难杂症解决方案100篇(八)-文本处理工具与bash的特性
- HDU Problem - 2732 Leapin' Lizards(最大流,拆点建边)
- 数据结构-二叉树的遍历-前序遍历 中序遍历 后序遍历
- Matplotlib 中文用户指南 4.1 文本介绍
- 查看Mysql实时执行的Sql语句
- VBA中 各种数据类型的使用(自定义数据类型Type,数组,数据字典)、读写文件
- Julia: Flux.jl尝试
- 无损检测技术知识大全
- 图像的三种分形维数的计算方法
- html超链接下划线改虚线_CSS和html中超链接去掉下划线的方法总结
- 又到一年清明时,又是一年踏春季
- 谈谈c语言中delay的用法
- Java Fork/Join与协程
- 比 iPhone 12 更值得期待的,是苹果的电动车
- 设计模式原则——单一职责原则
- HP Jaserjet1007打印机在win7 64位下不能安装
- 提示“The connected J-Link is defective,Proper operation cannot be guaranteed.”解决办法
- vue.js高仿饿了吗实现tips
- 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场