您的位置:首页 > 编程语言 > Lua

Order of Evaluation

2015-08-24 09:30 260 查看
C++中的四个能够保证求值顺序的运算符

&&

||

?:



对于没有指定求值顺序的运算符,在一个表达式里既改变又使用一个对象是一个错误。

int i = 0;

cout << i << ” ” << ++i << endl; // undefined

A rule of thumb

如果你改变了一个操作数的值,不要在这个表达式的任何其他地方使用这个操作数

下面的代码片段是错误的

int a[3] = {1, 2, 1};

i = 0;

if (a[i++] == a[i+1])



不同的编译器的结果是不同的

那下面的代码呢?

int a[3] = {1, 2, 1};

i = 0;

if (a[i] == a[i+++1])



目前在两个编译器上的结果都等同于a[i] == a[i+1]

总之,要避免模糊的写法!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 操作符