【发布时间】:2014-03-05 01:13:43
【问题描述】:
我知道 c/c++ 的基础知识 最近,我经历了一个看起来很奇怪的任务
int a=1,b=2,c=5;
int x = (a,b,c);
奇怪的是,x 的值为 5。
老实说,如果我知道这个赋值操作叫什么,我会搜索谷歌的。
有什么帮助吗?
【问题讨论】:
标签: c variable-assignment
我知道 c/c++ 的基础知识 最近,我经历了一个看起来很奇怪的任务
int a=1,b=2,c=5;
int x = (a,b,c);
奇怪的是,x 的值为 5。
老实说,如果我知道这个赋值操作叫什么,我会搜索谷歌的。
有什么帮助吗?
【问题讨论】:
标签: c variable-assignment
这个任务没有被特别地称为任何东西,不是这样的。这是comma operator的用法。
它只是按从左到右的顺序计算所有参数,结果是最后一个(最右边)表达式的值。
括号在这里很重要,没有它们就变成了简单的初始化,这个:
int x = a, b,c;
做了一些完全不同的事情:它将x声明并初始化为a的值,然后在b和c上产生重新声明错误;上述行无法编译。
请注意,这与 for 循环的开头子句中的逗号不同。
【讨论】:
for 循环的开头子句中的逗号不同。"以什么方式?
, 在第二个语句中称为逗号运算符。它从左到右计算,最后一个操作数(子表达式)的值将成为整个表达式的值。万一
int x = (a,b,c);
首先评估a,丢弃其值,然后评估b,丢弃其值,最后评估c,并将其值分配给x。
【讨论】: