今日、次のコードが gcc でコンパイルされることがわかりました。
#include <iostream>
int main()
{
int x = (23,34);
std::cout << x << std::endl; // prints 34
return 0;
}
これがコンパイルされるのはなぜですか?(..., ...) とはどういう意味ですか?
今日、次のコードが gcc でコンパイルされることがわかりました。
#include <iostream>
int main()
{
int x = (23,34);
std::cout << x << std::endl; // prints 34
return 0;
}
これがコンパイルされるのはなぜですか?(..., ...) とはどういう意味ですか?
式では、コンマ演算子はすべてのオペランドを評価し、最後のものを返します。そのため、あなたの例では、x
は 34 です。
C++ では、,
は演算子であるため、(23,34)
は式と同じよう(23+34)
に式です。前者,
は演算子、後者+
は演算子です。
したがって、式(23,34)
は右端のオペランドに評価されます。34
これが、コードが出力する理由です34
。
,
関数呼び出しの演算子ではないことにも言及したいと思います。
int m = max(a,b);
ここで,
は、引数の区切りとして機能します。オペレーターとしては機能しません。したがって、関数に 2 つの引数を渡します。
でも、
int m = max((a,b), c);
ここで、1 つ目は,
演算子、2 つ目,
はセパレータです。したがって、3 つではなく 2 つの引数を関数に渡すことは、次のようになります。
int m = max(b, c); //as (a,b) evaluates to b
それが役立つことを願っています。:-)