我无法弄清楚这个 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/