C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 右值转换的左值是否会发生?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

例如:

int x;
int *p = &x;

在上面的例子中,p是& x两个左值?或者什么是恰当的例子?

编辑:

那这个呢?

int &r = x;

我确信在这个声明中没有转换,但我很困惑&操作符涉及到这个?

解决方法

引用说,转换不适用于一元&的操作数. (在这种情况下,X).所以&的操作数是一个左值.

这与一元运算符不同.如果你写x,那么lvalue-to-rvalue转换应用于子表达式x(在这种情况下具有未定义的行为,因为x尚未初始化).

非正式地,“左值到右值的转换”意味着“读取价值”.

引用并未说明&的结果,实际上它是一个右值.在int * p =& x;:

> x是左值,指的是该名称的变量,
>& x是一个rvalue,它是初始化程序的一部分(具体来说,是赋值表达式),
> p既不是右值也不是左值,因为它不是(子)表达式.它是正在定义的变量的名称.在C声明符语法中,它是declarator-id(C 03标准中的8/4).

int& r = x;不使用&完全是操作符的地址. &声明符中的字符只是语法,意思是r是引用到int,它不是取r的地址.在C声明符语法中,它实际上称为ptr-operator.

大佬总结

以上是大佬教程为你收集整理的c – 右值转换的左值是否会发生?全部内容,希望文章能够帮你解决c – 右值转换的左值是否会发生?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。