คำถามติดแท็ก lvalue

3
ส่งคืนชนิดของ '?:' (ตัวดำเนินการแบบมีเงื่อนไข)
ทำไมคนแรกถึงกลับมาอ้างอิง? int x = 1; int y = 2; (x > y ? x : y) = 100; ในขณะที่สองไม่ได้? int x = 1; long y = 2; (x > y ? x : y) = 100; อันที่จริงที่สองไม่ได้รวบรวมเลย - "ไม่ lvalue ซ้ายของการมอบหมาย"

9
ทำไม +++++ 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; } ข้อผิดพลาดหมายถึงอะไรในตัวอย่างแรก
89 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++; | ^~ มันฟังดูยุติธรรมสำหรับฉัน การเพิ่มขึ้นของ Postfix มีลำดับความสำคัญสูงกว่าการเพิ่มคำนำหน้าดังนั้นจึงมีการแยกวิเคราะห์รหัสint b = ++(i++);และiเป็น rvalue ดังนั้นข้อผิดพลาด ลองพิจารณาตัวแปรนี้ด้วยวงเล็บเพื่อแทนที่ลำดับความสำคัญเริ่มต้น: int main() { int …

2
เหตุใดตัวแปร enum จึงเป็นค่าที่นี่
ตัวอย่าง: 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.