Stanislav Petrov Asked:2020-08-04 23:30:47 +0000 UTC2020-08-04 23:30:47 +0000 UTC 2020-08-04 23:30:47 +0000 UTC 左值到右值的转换 772 什么是左值到右值的转换?本文不明确以下内容: 显然,如果我们在需要对象值的上下文中使用上述任何左值表达式(例如,在赋值运算符的右侧),编译器对地址的使用就会出错。也就是说,虽然表达式 i 是左值(“地址和值”),但编译器必须使用相应的右值(“值”)。根据 C++ 标准,这称为左值到右值的转换。 作者这是什么意思? c++ 2 个回答 Voted Best Answer Harry 2020-08-05T00:01:48Z2020-08-05T00:01:48Z 那么大约... 看,这样的变量是左值 - int i; i = 4; 在这里,事实上,使用了变量的地址i——将值 4 写入何处。 int i, j; i = 4; j = i; 现在怎么办?现在i在第一个赋值中充当左值 - 即 被用作内存中位置的指示,而在第二个中 - 已经作为右值 - 不是作为内存中位置的指示,而是作为存储在该位置的值。 那些。从左值获得右值。那些。编译器将左值转换为右值 - 执行左值到右值的转换。 是或多或少清楚还是需要多说?.. gecube 2020-08-05T00:04:34Z2020-08-05T00:04:34Z 一切都非常简单,您需要仔细阅读文章上面所写的内容。 右值只是一个值(它没有地址) 左值是既有值又有地址的东西。 在示例的情况下 int j; int i; j = i; i 和 j 都可以是左值(即可以在赋值运算符的左边),但是在 i 的例子中,我们只想要值,所以将左值转换为右值。
那么大约...
看,这样的变量是左值 -
在这里,事实上,使用了变量的地址
i——将值 4 写入何处。现在怎么办?现在
i在第一个赋值中充当左值 - 即 被用作内存中位置的指示,而在第二个中 - 已经作为右值 - 不是作为内存中位置的指示,而是作为存储在该位置的值。那些。从左值获得右值。那些。编译器将左值转换为右值 - 执行左值到右值的转换。
是或多或少清楚还是需要多说?..
一切都非常简单,您需要仔细阅读文章上面所写的内容。
右值只是一个值(它没有地址) 左值是既有值又有地址的东西。
在示例的情况下
int j; int i; j = i;i 和 j 都可以是左值(即可以在赋值运算符的左边),但是在 i 的例子中,我们只想要值,所以将左值转换为右值。