我知道c / c ++的基础知识 最近,我经历了一个看似奇怪的任务
int a=1,b=2,c=5;
int x = (a,b,c);
奇怪的是,x的值是5
老实说,如果我知道这个分配操作被称为什么,我会搜索谷歌
有什么帮助吗?
答案 0 :(得分:4)
,
称为逗号运算符。它从左到右进行求值,最后一个操作数(子表达式)的值将成为整个表达式的值。如果
int x = (a,b,c);
首先评估 a
,丢弃其值,然后评估b
并丢弃其值,最后评估c
并将其值分配给x
。< / p>
答案 1 :(得分:3)
任务没有被特别调用,那不是它。这是comma operator。
的用法它只是按从左到右的顺序计算所有参数,结果是最后一个(最右边)表达式的值。
这里的括号是至关重要的,没有它们就会变成简单的初始化,这就是:
int x = a, b,c;
执行完全不同的操作:它声明并x
初始化a
的值,然后在b
和c
上生成重新声明错误;以上行不编译。
请注意,这与for
循环的开头子句中的逗号不同。