簡體   English   中英

C++ 分配優先級

[英]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等於hahahaha 等於3

在第一行:創建了一個名為“haha”的變量。

在第二行:

  • 創建了一個名為“hehe”的變量
  • 3被分配到哈哈
  • haha 的值被評估並賦值給 hehe

建議:始終在創建時初始化變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM