次のような競争力のある C の質問に出くわしました。
次の出力を見つけます。
#include <stdio.h>
int main(void) {
int a=5, b=10, c=5;
int x;
x = a>b>c;
printf("%d\n", x);
return 0;
}
コンパイラは 0 を返します。
私の説明は、おそらくこれは右から左への評価の副作用であるということです。私の推測では、最初b>c
に評価されます (最初にスタックにプッシュされると仮定すると、 > の左から右への結合性を知っているので、ここで混乱します)、これは true と評価されます。この真の変数の値は、数値 > 0 (不明) であり、a > that_value
評価されて結果が得られます。しかし、私は間違っているかもしれません!
出力がどのように評価されるかについての指針/洞察は役に立ちます。ありがとう。
編集:私は1を与えた非常に古いコンパイラでテストしました、それは私の側の間違いでした、それを修正しました。