コンパイラが右辺値を予期している状況で左辺値が現れると、コンパイラは左辺値を右辺値に変換します。
T が関数または配列型でない場合、型 T の左辺値 e は右辺値に変換できます。変換後の e の型は T になります。
コンパイラがいつ右辺値を期待するのか、または左辺値に還元される式が右辺値に変換されるような正確な規則とは何かを誰かが知ることができますか? 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;
左辺値から右辺値への変換が発生したときに誰かが詳しく説明してください?? 私の混乱は、最初のケースでは配列添字で左辺値から右辺値への変換が(宣言時に)発生しないが、2番目のケースでは発生することです