逗号运算符是什么意思?

Al *_*l B -2 c variable-assignment

我之前已经声明了变量及其值,但之前我从未在一行中完成过.

如果我写

A, B = 0.0, 2;
Run Code Online (Sandbox Code Playgroud)

这是否意味着

A = 0 
Run Code Online (Sandbox Code Playgroud)

B = 2? 
Run Code Online (Sandbox Code Playgroud)

Vla*_*cow 5

这个表达

A, B = 0.0, 2;
Run Code Online (Sandbox Code Playgroud)

是逗号运算符的表达式(这里是两个逗号运算符).它可以像

( A ), ( B = 0.0 ), ( 2 );
Run Code Online (Sandbox Code Playgroud)

结果变量B将获得值0.0.变量A将保持不变.

来自C标准(6.5.17逗号运算符)

2逗号运算符的左操作数被计算为void表达式; 它的评估与右操作数之间存在一个序列点.然后评估右操作数; 结果有它的类型和价值

所以上面的表达式的值是2,类型是int.不使用表达式的值.因此唯一的副作用是将值0.0赋给变量B.

  • @PaulOgilvie赋值运算符的优先级高于逗号运算符. (3认同)