如果左值出现在编译器需要右值的情况下,编译器会将左值转换为右值。
如果 T 不是函数或数组类型,则类型 T 的左值 e 可以转换为右值。转换后的 e 类型为 T。
有人可以告诉编译器何时需要 Rvalue 。或者什么是精确规则,以便将减少为 Lvalue 的表达式转换为 Rvalue。在 C 中,当我们尝试声明可变大小数组时
int b=8;
int a[2*b]; //compiler gives error that constant expression reqd. what is this constant expression (is it rvalue expression)
但是当我这样做的时候
int a[10];
a[2*b]=89;
当 Lvalue 到 Rvalue 转换发生时,它没有给出错误请有人详细说明?我的困惑是,在第一种情况下,在数组下标中它不会发生左值到右值的转换(在声明时),但在第二种情况下会发生