首先从一段代码说起:

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语言之三目运算符---学习笔记相关推荐

  1. 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)

    学习者:骆栢维 题目来源:生信基石之R语言 中级10 个题目:http://www.bio-info-trainee.com/3750.html 备注:本文为笔者学习健明老师GitHub答案代码的学习 ...

  2. 《Go语言圣经》学习笔记 第十一章 测试

    <Go语言圣经>学习笔记 第十一章 测试 目录 go test 测试函数 测试覆盖率 基准测试 剖析 示例函数 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语 ...

  3. 《Go语言圣经》学习笔记 第十章 包和工具

    <Go语言圣经>学习笔记 第十章 包和工具 目录 包简介 导入路径 包声明 导入声明 包的匿名导入 包和命名 工具 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. G ...

  4. 《Go语言圣经》学习笔记 第九章 基于共享变量的并发

    <Go语言圣经>学习笔记 第九章 基于共享变量的并发 目录 竞争条件 sync.Mutex互斥锁 syn.RWMutex读写锁 内存同步 syn.Once初始化 竞争条件检测 示例:并发的 ...

  5. 《Go语言圣经》学习笔记 第八章 Groroutines和Channels

    <Go语言圣经>学习笔记 第八章 Groroutines和Channels 目录 Goroutines 实例:并发的Clock服务 实例:并发的Echo服务 Channels 并发的循环 ...

  6. 《Go语言圣经》学习笔记 第六章 方法

    <Go语言圣经>学习笔记 第六章 方法 目录 方法声明 基于指针对象的方法 通过嵌入结构体来扩展类型 方法值和方法表达式 示例:Bit数组 封装 注:学习<Go语言圣经>笔记, ...

  7. 《Go语言圣经》学习笔记 第五章函数

    <Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...

  8. 《Go语言圣经》学习笔记 第四章 复合数据类型

    <Go语言圣经>学习笔记 第四章 复合数据类型 目录 数组 Slice Map 结构体 JSON 文本和HTML模板 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. ...

  9. 《Go语言圣经》学习笔记 第三章 基础数据类型

    <Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...

最新文章

  1. 黑盒测试--因果图法
  2. Linux疑难杂症解决方案100篇(八)-文本处理工具与bash的特性
  3. HDU Problem - 2732 Leapin' Lizards(最大流,拆点建边)
  4. 数据结构-二叉树的遍历-前序遍历 中序遍历 后序遍历
  5. Matplotlib 中文用户指南 4.1 文本介绍
  6. 查看Mysql实时执行的Sql语句
  7. VBA中 各种数据类型的使用(自定义数据类型Type,数组,数据字典)、读写文件
  8. Julia: Flux.jl尝试
  9. 无损检测技术知识大全
  10. 图像的三种分形维数的计算方法
  11. html超链接下划线改虚线_CSS和html中超链接去掉下划线的方法总结
  12. 又到一年清明时,又是一年踏春季
  13. 谈谈c语言中delay的用法
  14. Java Fork/Join与协程
  15. 比 iPhone 12 更值得期待的,是苹果的电动车
  16. 设计模式原则——单一职责原则
  17. HP Jaserjet1007打印机在win7 64位下不能安装
  18. 提示“The connected J-Link is defective,Proper operation cannot be guaranteed.”解决办法
  19. vue.js高仿饿了吗实现tips
  20. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场

热门文章

  1. C# Hash字符串
  2. php 数字 字母组合,php随机生成数字字母组合的方法_php技巧
  3. Python cv2(Opencv) Canny边缘检测 和 傅里叶变换
  4. IDEA自定义注释模板实现方法。
  5. 煤矿用计算机,计算机技术在煤矿安全生产中应用
  6. form表单用butten提交后无反应表单提交三种方式
  7. Netbeans安装教程
  8. Linux之root密码忘记
  9. 钉钉的自动打卡上下班辅助android软件
  10. FFmpeg编译成Android动态库