gpt4 book ai didi

c++ - 使用++ 作为通过类成员访问语句的前缀不会导致错误

转载 作者:行者123 更新时间:2023-12-03 10:04:25 25 4
gpt4 key购买 nike

我现在有点困惑,我正在运行以下代码:

std::vector<int> test{1, 5, 10};
++test.at(1); // I'm trying to increment that number 5 to six, which works
std::cout << test.at(1) << std::endl; // Prints out 6 to the console
我期待它给我一个编译器错误,因为正如我从运算符优先级中读到的那样 . (用于成员访问)和增量运算符( ++ )具有相同的优先级,但根据我的理解,它们在语句中从左到右阅读。所以在上面显示的代码中,我认为它等于说 (++test).at(1) ,这显然会导致编译器错误。为什么即使关联性从左到右也不是这种情况,为什么它像这样读取它(根据我的想法)... ++(test.at(1)) ?如果它们具有相同的优先级,不是吗,就像在数学中一样,例如,使用 ++先是 . ?

最佳答案

确实,后缀增量( a++ )和成员访问( . )具有相同的优先级。
但是您正在使用前缀增量( ++a )。
咨询 cppreference's precedence chart .
确实,test++.at(i)会因为你给出的原因而出错,但作为代码的读者,在这种情况下我们不会以任何方式感到惊讶。

关于c++ - 使用++ 作为通过类成员访问语句的前缀不会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65044085/

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