逗號(hào)運(yùn)算符如何工作逗號(hào)運(yùn)算符如何在C ++中工作?例如,如果我這樣做:a = b, c;最終是否等于b或c?(是的,我知道這很容易測(cè)試 - 只是在這里記錄,以便有人快速找到答案。)更新: 此問題在使用逗號(hào)運(yùn)算符時(shí)暴露了細(xì)微差別。只是記錄下來:a = b, c; // a is set to the value of b!a = (b, c); // a is set to the value of c!這個(gè)問題實(shí)際上是受到代碼中的拼寫錯(cuò)誤的啟發(fā)。打算做什么a = b;c = d;轉(zhuǎn)換成a = b, // <- Note comma typo!
c = d;
4 回答

HUWWW
TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
請(qǐng)注意,逗號(hào)運(yùn)算符可能在C ++中過載。因此,實(shí)際行為可能與預(yù)期的行為非常不同。
例如,Boost.Spirit非常巧妙地使用逗號(hào)運(yùn)算符來實(shí)現(xiàn)符號(hào)表的列表初始值設(shè)定項(xiàng)。因此,它使以下語(yǔ)法成為可能且有意義:
keywords = "and", "or", "not", "xor";
請(qǐng)注意,由于運(yùn)算符優(yōu)先級(jí),代碼(故意?。┫嗤?/p>
(((keywords = "and"), "or"), "not"), "xor";
也就是說,第一個(gè)被調(diào)用的運(yùn)算符是keywords.operator =("and")
返回一個(gè)代理對(duì)象,在該代理對(duì)象上operator,
調(diào)用其余的s:
keywords.operator =("and").operator ,("or").operator ,("not").operator ,("xor");
- 4 回答
- 0 關(guān)注
- 641 瀏覽
添加回答
舉報(bào)
0/150
提交
取消