0


[C/C++]_[初级]_[三元运算符的陷阱]

场景

  1. 在使用三元运算法?:时, 发现计算的结果不是自己想要的 150?
auto tSize =100;auto check =1;
tSize = tSize +(check)?50:0;
cout <<"tSize second: "<< tSize << endl;

说明

  1. 三目运算符的优先级级别很低[1],在所有运算法里在第13级,也就比赋值运算符和逗号运算符高。所以以上的代码要把三元运算符的结果加上tSize,那么就需要加圆括号((check) ? 50 : 0).

例子

test.cpp

voidTestTernaryOperator(){{auto tSize =100;auto check =1;
        tSize = tSize +((check)?50:0);
        cout <<"tSize first: "<< tSize << endl;}{auto tSize =100;auto check =1;
        tSize = tSize +(check)?50:0;
        cout <<"tSize second: "<< tSize << endl;}}

输出

tSize first: 150
tSize second: 50

参考

  1. C语言中运算符与其优先级

本文转载自: https://blog.csdn.net/infoworld/article/details/144150908
版权归原作者 Peter(阿斯拉达) 所有, 如有侵权,请联系我们删除。

“[C/C++]_[初级]_[三元运算符的陷阱]”的评论:

还没有评论