[問題] C++ <<= operator & lvalue

看板C_and_CPP作者 (xatier)時間12年前 (2012/06/14 09:14), 編輯推噓3(307)
留言10則, 4人參與, 最新討論串1/1
問題(Question): <<= operator 丟出來的東西好像在 C 和在 C++ 的意思不太一樣 今天在老師講義上看到 (_capacity<<=1)++; 這樣的寫法愣了一下 不太懂為什麼 C++ 竟然可以編得過 @@ 以 C 語言的角度來看, () 內部算出來的東西應該不是一個 lvalue 阿, 為什麼可以去 modify 他呢 想請教各位板大這部份在 C 和 C++ 的差異 m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.247.99

06/14 09:32, , 1F
沒記錯的話 assignment 類運算子都是回傳它左邊那個 lvalue
06/14 09:32, 1F

06/14 10:07, , 2F
自問自答,剛剛去翻了一下 C++11 standard darft
06/14 10:07, 2F

06/14 10:08, , 3F
5-17 All require a modifiable lvalue as their left
06/14 10:08, 3F

06/14 10:08, , 4F
operand and return an lvalue referring to the left oper
06/14 10:08, 4F

06/14 10:09, , 5F
operand 所以一樓說的是對的XD 謝謝
06/14 10:09, 5F

06/14 10:09, , 6F
^^^^ draft
06/14 10:09, 6F

06/14 10:23, , 7F
順便對照一下 C11 標準 http://codepad.org/SvaOQT1k
06/14 10:23, 7F

06/14 10:23, , 8F
C++ 說是 lvalue, C 說不是阿ˊ_>ˋ
06/14 10:23, 8F

06/15 17:57, , 9F
這就是C和C++的些微差異之一
06/15 17:57, 9F

06/15 19:06, , 10F
這讓我想到 ++++x 的寫法..
06/15 19:06, 10F
文章代碼(AID): #1FsJi0im (C_and_CPP)