书上看的代码:
const string *shoterString(const string &s1, const string &s2){
return s1.size() <= s2.size() ? s1 : s2;
}
auto sz = shorterString(s1,s2).size();
之前看书上有写:
1.运算符有求值顺序,大部分都没有规定求值顺序。
2.在一条形如 f() + g()*h()+j() 的表达式中,优先级规定,g()的返回值和 h()的返回值相乘,结合律规定,f()的返回值先与 g()和 h()的乘积相加,所得结果再与 j()的返回值相加,对于这些函数的调用顺序没有明确规定。
那是不是点运算符的求值顺序是从左到右?否则,假如可能先右的话,那左边都还没求出来,怎么求.size()
?
在 SO 上找到一个类似的问题,但好像也没说明白,dot-operator-order-of-evaluation-in-c?
请教大佬们:D
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.