我相信接觸過c語言的人都聽過"左值"這個概念,不過到底什麼是左值呢?其實能說清楚的人其實並不多,這其中就包括很多使用c語言多年的所謂老鳥。
我聽的最多的解釋是:「左值就是可以出現在賦值運算子左邊的東西」。
根據這個定義,我提出我的幾個疑惑:
(1)那麼我們看如下**片段:
int x, y;
x = 100;
y = x;
這裡變數x既可以出現在賦值運算子的左邊,又可以出現在賦值運算子的右邊,難不成變數x既是左值,又是右值?
還有一點,在c/c++中陣列名不能出現在賦值運算子的左邊,那麼陣列名是右值咯?
帶著這些疑惑,讓我們試圖從c標準中找到答案。注意,這篇博文僅限於c語言討論,因為c++標準對這塊知識點進行了諸多擴充套件,等將來有機會再另起一篇博文闡述c++中的左值知識點。
想明白什麼是左值,首先需要了解下什麼是表示式。
《理解c和c++中的左值和右值》
《value categories》
《value (computer science)》(wikipedia)
《lvalues and rvalues》
《non-modifiable lvalues》
《what are lvalue and rvalue in c?》
《c string literals are lvalues》
《understanding the meaning of lvalues and rvalues in c++》
《值 (電腦科學)》(wikipedia)
《c/c++左值 右值討論》《c/c++左值性精髓》
《'lvalue' considered harmful》
C語言 基本概念
c語言的基本概念 1.格式 型別修飾符 變數名初始值.2.定義變數規則 1 不能以數字開頭.2 由下劃線,字母,美元符,數字組成.3 變數名不能重複.4 不要以拼音命名,特別是拼音簡寫.5 駝峰結構 駝峰命名法.6 不能與系統保留字重名.3.編寫 規範 操作符兩個由空格,逗號後面乙個空格.練習1 定...
C語言基本概念
bit 中文名稱是位,音譯 位元 是用以描述電腦資料量的最小單位。二進位制數系統中,每個0或 1就是乙個位 bit bit縮寫為b。位元組 byte 是計算機 資訊科技 用於計量儲存容量和傳輸容量的一種計量單位,乙個位元組等於8位 二進位制數 byte 縮寫為b 1kb 1024 bytes 102...
C 語言基本概念
類 具有同種屬性的物件稱為類,是個抽象的概念。比如說 汽車 人 狗 神 物件 日常生活中的所有東西都是物件,是類的例項化。比如說 推土車是汽車的例項化 姚明是人的例項化 小白 狗的名字 是狗的例項化 二郎神是神的例項化 屬性 用來描述具體某個物件的特徵的是屬性,是靜態的。比如 姚明身高2.6公尺多 ...