我正在查看一些用于多重播放矩阵的 OpenGL ES 代码,但我不确定这个 if 语句是如何工作的:
for (int i = 0; i <_uniformArraySize; i++) {
**if (!strcmp(_uniformArray[i].Name, "ModelViewProjectionMatrix")) {**
GLKMatrix4 modelViewProjectionMatrix = GLKMatrix4Multiply(_projectionMatrix, _modelViewMatrix);
glUniformMatrix4fv(_uniformArray[i].Location, 1, GL_FALSE, modelViewProjectionMatrix.m);
}
}
!strcmp 表示字符串相等还是不相等?我查看了 strcmp 文档,它返回数字。那么 if 语句中的感叹号如何影响数字(即 strcmp 的返回值)呢?
谢谢
最佳答案
由于 Objective C 与 C 一样,允许在条件中使用整数,因此使用 !expr
是 expr== 0
的常见简写。
您的陈述相当于
if (strcmp(_uniformArray[i].Name, "ModelViewProjectionMatrix") == 0) {
...
}
自 strcmp
当字符串彼此相等时返回零,条件检查两个 C 字符串的内容是否相同。
关于Objective-C: "if"语句中的感叹号 strcmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17659539/