考虑此代码:
int i = 1;
int x = ++i + ++i;
我们对编译器可能对此代码所做的猜测(假设它已编译。)>
对我来说,第二个似乎很有可能。两个++运算符之一以i = 1执行,i递增,并返回结果2。然后使用i = 2执行第二个++运算符,i递增,并返回结果3。然后将2和3加在一起得到5。
但是,我在Visual Studio中运行了这段代码,结果是6。我试图更好地理解编译器,我想知道是什么可能导致6的结果。我唯一的猜测是代码可以通过一些“内置”并发执行。调用了两个++运算符,每个运算符在另一个返回之前先加i,然后它们都返回3。这与我对调用堆栈的理解相矛盾,因此需要解释掉。
我的问题是:C ++编译器可以做什么(导致)结果为4或结果为6?
考虑此代码:int i = 1; int x = ++ i + ++ i;假设编译器可以编译该代码,我们对此可能会有一些猜测。两者++ i都返回2,导致x = 4。一个++ i返回2,并且...