C++ 三元运算符逻辑

标签 c++ ternary-operator

我无法弄清楚这个 if 语句在做什么。这不是我的代码,所以我只是想了解三元运算符在做什么。

    if((model[STRIDE].isLogging == true ? model[STRIDE].value           : g_uiStride)   == g_uiStride &&
       (model[NUMVERTS].isLogging == true ? model[NUMVERTS].value       : NumVertices)  == NumVertices &&
       (model[PRIMCOUNT].isLogging == true ? model[PRIMCOUNT].value     : primCount)    == primCount &&
       (model[STARTINDEX].isLogging == true ? model[STARTINDEX].value   : startIndex)   == startIndex)
    {

最佳答案

首先,

(model[STRIDE].isLogging == true ? model[STRIDE].value : g_uiStride) == g_uiStride

可以这样写:

(model[STRIDE].isLogging ? model[STRIDE].value : g_uiStride) == g_uiStride

三元组

model[STRIDE].isLogging ? model[STRIDE].value : g_uiStride

检查 model[STRIDE].isLogging 是否为真。如果是,它采用值 model[STRIDE].value。如果不是,它采用值 g_uiStride。然后将其与 g_uiStride 进行比较。

所以,如果它没有记录,那么这部分自动为真,因为 g_uiStride 与它自己进行了比较。如果是日志记录,如果 mode[STRIDE].value == g_uiStride 为真 和

关于C++ 三元运算符逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8824888/

相关文章:

java - 三元运算符在 Android 中不起作用

c++ - 检查数据库中的指纹

c++ - MSBuild C++ - 命令行 - 可以传递定义吗?

c++ - 使用 boost.program_options 处理 '-'

php - 有什么作用? ... : . .. 做吗?

c# - 为什么 C# 三元运算符需要强制转换,而等效的 if() 语句不需要?

c++ - 是否有忙等待条件或直到超时的标准功能

c++ - 从文件中搜索字符串的函数

javascript - 三元运算符不改变背景颜色

java - Java中if/else-if/else转换为三元运算符