タグ付けされた質問 「lvalue」


9
a +++++ bが機能しないのはなぜですか?
int main () { int a = 5,b = 2; printf("%d",a+++++b); return 0; } このコードにより、次のエラーが発生します。 エラー:増分オペランドとしてlvalueが必要です しかし、と全体にスペースを入れるa++ +と++b、問題なく動作します。 int main () { int a = 5,b = 2; printf("%d",a++ + ++b); return 0; } 最初の例でエラーは何を意味しますか?
88 c  lvalue 

3
(++ i)++が有効なのに「++ i ++」が無効なのはなぜですか?
次のコードを考えてみましょう: int main() { int i = 2; int b = ++i++; return 3; } 次のエラーでコンパイルされます。 <source>: In function 'int main()': <source>:3:16: error: lvalue required as increment operand 3 | int b = ++i++; | ^~ これは私には公平に聞こえます。後置インクリメントはコードのように解析されて、接頭増分よりも高い優先度を有するint b = ++(i++);とi右辺値です。したがってエラー。 デフォルトの優先順位を上書きするために、括弧を付けたこのバリアントについて考えてみましょう。 int main() { int i = 2; int b …

2
ここで列挙型変数が右辺値になるのはなぜですか?
例: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } これをコンパイルすると、次のエラーが発生します。 <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type 'unsigned int&' to an rvalue of type …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.