逗号在这里有什么功能,为什么它不会引起编译时错误?
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);
| ^
代码片段:
#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);
| ^