[英]Odd behavior with ternary operation
以下代碼應該刪除字符串的最后一個字符,如果flip
為true則附加l
(小寫L)或如果為false則附加r
。
std::stringstream ss;
ss << code.substr(0, code.size() - 1);
ss << flip ? "l" : "r";
std::string _code = ss.str();
但是,當flip
為true時,它會追加1
,當它為false時,它會追加0
。 怎么會?
優先權問題。
ss << flip ? "l" : "r";
手段
(ss << flip) ? "l" : "r";
使用
ss << ( flip ? "l" : "r" );
它與運算符優先級有關。 <<
優先考慮?
這意味着首先將flip
附加到ss
。
以下應導致預期的行為:
ss << (flip ? "l" : "r");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.