gpt4 book ai didi

c++ - 通过指针解引用并递增给出一个不同的值,然后递减它,取而代之的是C++

转载 作者:行者123 更新时间:2023-12-03 07:09:23 26 4
gpt4 key购买 nike

我试图在C++中使用指针做一些实验,确实了解了优先级的概念,但是下面的程序在我的脑海中and绕,无法理解
码:

#include <iostream>
using namespace std;

int main() {

int x = 9;
int* ptr = &x;

cout << "The value of x is " << x << endl << "The value of ptr is " << ptr << endl << *ptr << endl << (*ptr)++ << endl << (*ptr)++ << endl << (*ptr)++ << endl;

return 0;
}
在此程序中,给x的初始值为9,我希望编译器给我x的值为9,然后使用指针将其递增,因此我希望答案为9,Address,9,10,11,12但相反,我在每个编译器中得到的答案是x的值是12,其余的像这样12,Address,11,10,9
请帮助我了解这是C++中的新手

最佳答案

这与优先级无关,而与评估顺序有关。您假设评估的顺序是从左到右,但这不是正确的。如您所见,就您而言,它是从右到左。
但是,这是C++发生变化的 Realm 。在C++ 17版本中,更改了上述表达式的规则,以保证从左到右的求值顺序。因此,如果可以,请使用强制版本为C++ 17的编译器选项,并且应该会看到结果更改。
并非到处都不能保证从左到右的评估顺序,例如,给定A + B,它仍然可以是A在B之前或B在A之前。可以找到详细信息here

关于c++ - 通过指针解引用并递增给出一个不同的值,然后递减它,取而代之的是C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64619242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com