本文主要是介绍【C++】序列点与副作用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有一道考题考过
int a = 1, b = 2;
问
(a++, b++, a+b)
的值,那这题a和b的自增运算到底什么时候发生的呢?
自增属于副作用。
像逗号, 分号; 这些都属于序列点。
到达序列点时,序列点之前的副作用都应该生效。
即到达逗号,时,a的自增就生效了,而不是先使用a的值然后把自增留着以后生效。
所以(a++, b++, a+b)的值是5。
那
b = a++;
呢?
这里先把a的值赋给b,以后到达分号时自增(++)才保证已经生效。
注意赋值符号=不是序列点。
这篇关于【C++】序列点与副作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!