読んだあとC++/STL の隠れた機能と暗い部分でcomp.lang.c++.moderated
、次のスニペットが Visual Studio 2008 と G++ 4.4 の両方でコンパイルされ、動作したことに非常に驚きました。これは GCC でも動作するため、有効な C であると想定されます。
コードは次のとおりです:
#include <stdio.h>
int main()
{
int x = 10;
while (x --> 0) // x goes to 0
{
printf("%d ", x);
}
}
出力:
9 8 7 6 5 4 3 2 1 0
これは標準のどこで定義されていますか? また、どこから来たのでしょうか?
ベストアンサー1
-->
は演算子ではありません。実際には 2 つの別々の演算子--
です>
。
条件内のコードは を減分しながらの元の(減分されていない)値x
を返し、次に 演算子を使用して元の値と比較します。x
0
>
より理解しやすいように、この文は次のように書くこともできます。
while( (x--) > 0 )