今日、次のコードが 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
それが役立つことを願っています。:-)