gpt4 book ai didi

c++ - 为什么赋值运算符 = 返回的不是指针的值而是解引用值?

转载 作者:行者123 更新时间:2023-12-04 01:08:44 24 4
gpt4 key购买 nike

来自 What does an assignment return? :

An assignment expression has the value of the left operand after the assignment

和这段代码:

#include <iostream>
using namespace std;

int main() {

int a[5] = { 0,1,2 };
int* a_ptr = a;
int b = (*a_ptr++ = 3); //int *b won't compile
cout << b << endl; //3
}

计算(*a_ptr++ = 3)=左操作数是什么?

操作数的定义是什么?在我看来,操作数是一个标识符或名称,即 aptr

最佳答案

int b = (*a_ptr++ = 3);分组int b = (*(a_ptr++) = 3);。请注意,括号是多余的;你可以写

int b = *a_ptr++ = 3;

这在许多方面使结果更加明显,因为=从右到左的关联性 使得 3 传递给 的值>b.

a_ptr++ 是一个等于 a_ptr 的表达式,但一旦整个语句完成,它将指向数组 a 的第二个元素。由于您不使用那个递增的指针,++ 是一个转移注意力的问题,因此该语句简化为

int b = *a_ptr = 3;

显然 *a_ptr = 3 具有将数组 a 的第一个元素设置为 3 的效果 and 是一个表达式等于 3,分配给 b

关于c++ - 为什么赋值运算符 = 返回的不是指针的值而是解引用值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65492062/

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