可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题
可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题
你对这个回答的评价是?
你对这个回答的评价是
你对这个回答的评价是?
你对這个回答的评价是
至少在2018的今天C++的含参数函数奇偶性问题参数求值顺序仍然是未定的(交给编译器处理),所以含参数函数奇偶性问题参数求值的顺序可能在某些情况下回导致一些问题看下面这个例子:
如果实参运算顺序不定,那么打印结果也是不定的但好在现代编译器有自己的解决办法,gcc编译器下的打印结果:
1.每次打印确实是老老实实按从左到右的顺序打印;
2.读参数按从右到左读读到的同时会计算表达式的值(紸意右结合的++运算返回计算之前的值),然后入栈;
3.至少在2018的今天C++的含参数函数奇偶性问题参数求值顺序仍然是未定的(交给编译器处理),
以第一个为例作详细解释(again注意右结合的++运算返回计算之前的值):
首先从右往左,第一个读到的是test++
此时返回的是5(但test这个变量的徝已经被修改为6)入栈;第二个读到的是++test
,这是返回值是加一以后的test也就是7,入栈;最后一个test
没有运算直接读
所以最后从左到右最後读到的是7,7,5
这个例子是想说明,在比较常见的gcc编译器下的编译策略以及,提醒各位还是小心这类问题
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。