gpt4 book ai didi

c++ - 关于左值到右值的转换

转载 作者:行者123 更新时间:2023-11-30 01:30:39 28 4
gpt4 key购买 nike

“左值到右值的转换不是在一元运算符 & 的操作数上完成的。”

我可以知道这是什么意思吗>谁能解释一下......拜托

例如:

 int a[]={1,5};
int* x=&a;

最佳答案

好吧,这意味着左值到右值的转换不是完毕:-)。当您需要时,会发生左值到右值的转换对象的值,而不仅仅是对它的引用。获取对象的地址不需要值,所以没有左值到右值的转换。

我不确定这与您的代码有什么关系。转换在您的代码的第二行中没有完成的是数组到指针的转换。左值到右值的转换当然,也没有完成,但这是相当直观的和正常。数组到指针的转换发生在大多数用途中然而,表达式中的数组,所以可能会令人惊讶有些人更多。 (其实就是数组到指针的转换仅在必要时发生。但是有非常非常少在数组上合法的操作,所以它经常必要的。)在一元 & 运算符的情况下,数组到指针转换不会发生(也不能,因为数组到指针转换的结果是一个右值,并且一元 & 需要一个左值)。所以你正在获取地址数组,其类型为 int ()[2],即指向数组的指针两个诠释。这反过来又使分配非法,因为目标类型不是 int ()[2],而是 int*,并且没有两者之间的隐式转换。

关于c++ - 关于左值到右值的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4213180/

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