C++三元运算符逻辑

use*_*896 2 c++ ternary-operator

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

    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)
    {
Run Code Online (Sandbox Code Playgroud)

vex*_*ace 5

第一,

(model[STRIDE].isLogging == true ? model[STRIDE].value : g_uiStride) == g_uiStride
Run Code Online (Sandbox Code Playgroud)

可写:

(model[STRIDE].isLogging ? model[STRIDE].value : g_uiStride) == g_uiStride
Run Code Online (Sandbox Code Playgroud)

三元组

model[STRIDE].isLogging ? model[STRIDE].value : g_uiStride
Run Code Online (Sandbox Code Playgroud)

检查是否model[STRIDE].isLogging属实.如果是,则需要该值model[STRIDE].value.如果没有,则取值g_uiStride.然后将其与之进行比较g_uiStride.

因此,如果它没有记录,则该部分自动为真,因为g_uiStride它与自身进行比较.如果是记录,那么如果mode[STRIDE].value == g_uiStride