逗号运算符如何工作

逗号运算符如何工作

逗号运算符如何在C ++中工作?

例如,如果我这样做:

a = b, c;

最终是否等于b或c?

(是的,我知道这很容易测试 - 只是在这里记录,以便有人快速找到答案。)

更新: 此问题在使用逗号运算符时暴露了细微差别。只是记录下来:

a = b, c;    // a is set to the value of b!a = (b, c);  // a is set to the value of c!

这个问题实际上是受到代码中的拼写错误的启发。打算做什么

a = b;c = d;

转换成

a = b,    //  <-  Note comma typo!
c = d;


largeQ
浏览 599回答 4
4回答

慕妹3146593

它等于b。逗号运算符的优先级低于赋值。

HUWWW

请注意,逗号运算符可能在C ++中过载。因此,实际行为可能与预期的行为非常不同。例如,Boost.Spirit非常巧妙地使用逗号运算符来实现符号表的列表初始值设定项。因此,它使以下语法成为可能且有意义:keywords&nbsp;=&nbsp;"and",&nbsp;"or",&nbsp;"not",&nbsp;"xor";请注意,由于运算符优先级,代码(故意!)相同(((keywords&nbsp;=&nbsp;"and"),&nbsp;"or"),&nbsp;"not"),&nbsp;"xor";也就是说,第一个被调用的运算符是keywords.operator =("and")返回一个代理对象,在该代理对象上operator,调用其余的s:keywords.operator&nbsp;=("and").operator&nbsp;,("or").operator&nbsp;,("not").operator&nbsp;,("xor");
打开App,查看更多内容
随时随地看视频慕课网APP