2016-05-21 8 views
2

小HLSLスクリプトは、次の命令である:HLSL構文条件式

リターン(!X = Y = Z)。

これは本当に許可されていますか?これは構文的に正しいですか?これは何を意味するのでしょうか?

return(x!= y & & y!= z);

答えて

1

(x != y != z)(x != y && y != z)と同じではありません。一般に、と同じ規則に従います。この場合、左から右のルールが!=演算子に適用されます。その結果

int temp = (x != y); // true = 1, false = 0 
int r = (temp != z); // true = 1, false = 0 

、表現があれば1に評価され、xyが等しく、z0ない場合にのみ、またはx場合:値は整数であり、表現(x != y != z)は以下と等価であると仮定すると、 yは等しくなく、z1ではありません。

値がboolであるか、または0または1であることが保証されている場合、式は3項の論理排他または(xor)になります。

+0

ありがとうございます:) – m1au