[英]C++ assignment precedence
為了讓事情更有意義,基本上針對以下兩種情況。
我以某種方式想象它們是相似的,首先是右手邊。
但是“=”只是傳遞價值
"==" 返回比較結果 "true",然后轉換為 1。
所以他們實際上並不相似?
int hehe = haha = 3;
int hehe = haha == 3;
//------------------------------------------------
對於下面的代碼,你能解釋一下為什么haha和hehe都是3嗎?
我知道分配是正確的關聯。 所以哈哈先分配3。
但是為什么 (haha = 3) 的結果不是 1 表示操作成功呢? 而是3一直傳播到哈哈? 這兩種類型的術語是什么:3傳播一路vs某些操作成功。
int haha;
int hehe = haha = 3;
cout << haha << hehe;
但是為什么 (haha = 3) 的結果不是 1 表示操作成功呢?
因為這不是 C++ 語言規范所說的工作方式。 相反,賦值的結果是被賦值的值。 在這種情況下haha = 3
計算為3
。
在 C++ 中,我們從來沒有為內置的運算符“此操作成功”。 在某些情況下,當您錯誤地使用運算符時,編譯器會報錯。 但是,如果沒有發現錯誤,編譯器只會假設您知道自己在做什么。
因為,當賦值發生時,需要計算運算符右側的所有表達式,然后將結果分配給運算符左側的變量。 在評估表達式hehe = haha = 3
時,操作系統應首先評估haha = 3
。 這就是為什么hehe
等於haha
, haha
等於3
。
在第一行:創建了一個名為“haha”的變量。
在第二行:
建議:始終在創建時初始化變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.