逗号在这里有什么功能,为什么它不会引起编译时错误?

what functionality does comma hold here,why it doesn't evoke compile time error?

代码片段:

#include <stdio.h>
int computeSum(int number1, int number2) {
    int sum;
    sum = number1 + number2;
    return sum;

}
int main()
{
      int sum = 0,k=0;

      k,sum= computeSum(4,2);
      printf("%d %d",sum,k);

     return 0;
}

k 之间的逗号 ( , ) 有什么作用 总而言之,为什么它不会引起任何错误?它的意义是什么?

k,sum= computeSum(4,2); 只需获取 k 的值然后赋值 sum

也许您想 k = sum = computeSum(4,2); ?

赋值是一个返回值的表达式,而不是像 if ...

这样的语句

准确的说,一般表达式中逗号运算符的含义

e1 , e2

计算子表达式 e1,然后计算 e2;表达式的值是 e2.

的值

gcc编译器编译你的程序时,给出警告信息:

warning: left-hand operand of comma expression has no effect
k,sum= computeSum(4,2);
^

原因是,表达式

k,sum= computeSum(4,2);

计算子表达式 k,然后计算 sum= computeSum(4,2);。子表达式 k 结果未使用。

您在表达式 k 和赋值表达式之间使用的逗号运算符,只是将两个表达式组成一个表达式,并对它们进行排序。

当然,第一个表达式没有效果thus the compiler warns you(如果你要的话):

prog.c: In function 'main':
prog.c:12:8: warning: left-hand operand of comma expression has no effect [-Wunused-value]
   12 |       k,sum= computeSum(4,2);
      |        ^