在 C/C++ 中有明确的规则定义“序列点”/“序列之前”关系,例如以下表达式
int k = i-- * i;
int p = j-- + --j;
调用未定义的行为。
现在,我想知道在 GLSL 中管理此类表达式的规则是什么。我在 OpenGL 着色语言 (4.40) 规范中找不到任何定义类似于序列点/在关系之前排序的概念的东西。
在“5.9 表达式”部分它只说
预增量和预减量将它们操作的表达式的内容加或减 1 或 1.0,并且预增量或预减量表达式的值是该修改的结果值。后自增和后自减表达式对其操作的表达式的内容加或减 1 或 1.0,但结果表达式具有执行后自增或后自减之前的表达式值。
但是没有提到后增量何时应该与其他子表达式相关。
1/ 是否有关于如何在 GLSL 中定义表达式排序的规范或协议?
2/ 是i-- * ++i
有效/定义明确的 GLSL 表达式吗?如果是,那么一开始我们有它的价值是i=1
多少?