在c / c ++中调用这个赋值操作是什么?

时间:2014-02-07 14:58:35

标签: c variable-assignment

我知道c / c ++的基础知识 最近,我经历了一个看似奇怪的任务

int a=1,b=2,c=5;  
int x = (a,b,c);
奇怪的是,x的值是5 老实说,如果我知道这个分配操作被称为什么,我会搜索谷歌 有什么帮助吗?

2 个答案:

答案 0 :(得分:4)

第二个语句中的

,称为逗号运算符。它从左到右进行求值,最后一个操作数(子表达式)的值将成为整个表达式的值。如果

int x = (a,b,c);  
首先评估

a,丢弃其值,然后评估b并丢弃其值,最后评估c并将其值分配给x。< / p>

答案 1 :(得分:3)

任务没有被特别调用,那不是它。这是comma operator

的用法

它只是按从左到右的顺序计算所有参数,结果是最后一个(最右边)表达式的值。

这里的括号是至关重要的,没有它们就会变成简单的初始化,这就是:

int x = a, b,c;

执行完全不同的操作:它声明并x初始化a的值,然后在bc上生成重新声明错误;以上行不编译。

请注意,这与for循环的开头子句中的逗号不同。