error C2105: '++' needs l-value
出現在兩種情況:
char p[10]; ++p;++(x+1);左值是指能夠出現在賦值號左側、具有可修改內存地址的表達式。++ 操作符要求操作數必須是可修改的左值。
char p[10]; 中,p 是數組首元素地址的常量指針,編譯器將其視為右值常量,無法自增。若需遍歷,應使用指針變量:
char *ptr = p;
++ptr; // 合法
x+1 是一個臨時計算結果(右值),不佔用固定內存位置,無法取地址,自然不能自增。C 標準規定 ++ 後只能跟左值表達式(變量、解引用指針、數組元素等)。
x+1、a+b)產生右值,不可作為 ++、-- 或賦值操作的對象。