Vij*_*jay 1 c++ compiler-errors comma-operator
我正在使用VS2005编译器,我期待以下代码给出编译错误.
int a=1, b= 2, c=3;
a = (b,c);
Run Code Online (Sandbox Code Playgroud)
后赋值的值是3.根据我的理解,它应该给出编译错误.
我很高兴知道这背后是否有任何正当理由.
你的代码中唯一的错误就是你忘记了第二行末尾的分号,但我认为在撰写你的问题时这是一个印刷错误,而不是你问题的实际推力.
我认为你所展示的代码没有理由产生编译错误.它编译对我来说很好a
,实际上,它的值是3.
亲眼看看:以下代码返回3:
int main()
{
int a=1, b= 2, c=3;
a = (b,c);
return a;
}
Run Code Online (Sandbox Code Playgroud)
诀窍是你使用逗号运算符,它运算符来计算它的第一个操作数,然后丢弃结果,然后计算第二个操作数并返回它的值.
但是,正如Charles Bailey所说,你必须在函数内部包含问题中显示的代码,否则你将在任何编译器中得到编译错误.C++不允许在函数之外使用赋值语句.
您在C++中使用逗号运算符,它不常用.其工作原理如下
<expression1>, <expression2>
Run Code Online (Sandbox Code Playgroud)
它评估<expression1>
并丢弃结果,然后进行评估<expression2>
,并将结果作为整个表达式的值返回.