number = {12,13,14}スカラー初期化ですが、必要以上の要素を提供しています。コンパイラは警告をスローしますが、これは無視され、最初の要素 12 が variable に割り当てられていると思いますnumber。
ご利用の際はnumber = (12,13,14)、
コンマ ( ,) 演算子は、最初のオペランドを評価して結果を破棄し、次に 2 番目のオペランドを評価して結果を返します。
したがって、ここでは 12 が破棄され、13 が 13 と評価されて返されます。この返された 13 の値は、次のコンマ演算子の最初のオペランドです。ここで、13 から 13 を評価し、この結果 13 を破棄して、2 番目のオペランド、つまり 14 を評価し、結果を variable に割り当てられた 14 として返しますnumber。
あなたが次のことをするとき
number = 12,13;
printf("%d",number);
これは 12 を出力します。これは、優先順位が 12=より大きい,ため、最初number = 12に評価され、=割り当てられた値、つまり 12 が返されます。ここで、コンマ演算子は、演算の戻り値、つまり 12 と 13 の 2 つのオペランドを取得しまし=た。コンマ演算子を使用すると、12 は 12 として評価され、破棄されます。13 が評価されて返されます。に戻った?誰でもない。number割り当てが既に実行されているため、割り当てられていません。ようnumber = 12,13;に見える(number=12),13;
これも試してみてください。
int num1,num2;
num2 = (num1 = 13,14);
printf("%d %d",num1,num2);
これは13 14、以前のコード出力に指定された引数に従って出力されます。