Rust中的if表示式

2022-09-19 10:48:07 字數 1639 閱讀 2443

目錄if 表示式格式:

if 條件表示式
它表示「條件表示式」為 true 時執行「**段」的內容。下面的**當輸入為偶數時輸出「even」:

use std::io;

fn main()

}

或:

if 條件表示式  else
他表示「條件表示式」為 true 時執行「**段1」的內容;不成立時執行「**段2」的內容。下面的**當輸入為偶數時輸出「even」,當輸入為奇數時輸出「odd」:

use std::io;

fn main() else

}

需要注意的是,**中的條件表示式必須產生乙個 bool 型別的值,否則會觸發變異錯誤。與c++或j**ascript等語言不同,rust不會自動嘗試將非布林型別的值轉換為布林型別。你必須顯式地在 if 表示式中提供乙個布林型別作為條件。

例項程式:

use std::io;

fn main() is divisible by 5.", num);

} else if num % 3 == 0 is divisible by 3.", num);

} else if num % 2 == 0 is divisible by 2.", num);

} else is not divisible by 5, 3, or 2.", num);

}}

示例程式:

use std::io;

fn main() else ;

println!("res = {}", res);

}

這裡的 res 變數被繫結到了 if 表示式的輸出結果上面。當輸入的 num 為偶數時 res 將會被賦值為 5,而當 num 不是偶數時 res 將會被賦值為 6。

需要注意的是,if分支與else分支的結果的資料型別應當相同,加入分支表示式產生的型別無法匹配,就會觸發編譯錯誤。舉個例子:

use std::io;

fn main() else ;

println!("res = {}", res);

}

上述**會導致編譯時的錯誤,因為if與else分支產生了不同型別的值。rust在錯誤提示資訊中指出了程式出現問題的地方:

error[e0308]: `if` and `else` h**e incompatible types

--> src\main.rs:10:9

|7 | let res = if num % 2 == 0 else ;

| |_____- `if` and `else` h**e incompatible types

這段**中的if表示式會返回乙個整數,而else表示式會返回乙個字串。因為變數只能擁有單一的型別,所以這段**無法通過編譯。為了對其它使用 res 變數的**進行編譯時型別檢查,rust需要在編譯時確定 res 的具體型別。如果 rust 能夠使用執行時確定的 res 型別,那麼它就不得不記錄變數所有可能出現的型別,這會使得編譯器的實現更加複雜,並喪失許多**安全保障。

前序表示式 中序表示式 後序表示式

執行完成後,先輸出佇列內容,在輸出棧內容,最終結果即是後序表示式 先序表示式 後序表示式 public string infixtopostfix string elements if s.equals continue 碰到 或 運算子 if s.equals s.equals while sta...

Python中的語句 表示式語句 表示式

前面幾篇文章,介紹了python中的核心物件型別 有數字 字串 列表 字典 元組等。python中除了這些核心型別外,還有一項重要的基礎 語句。那麼語句是什麼呢?語句就是寫出來句子來告訴python應該去幹什麼。程式由模組構成 模組包含語句 語句包含表示式 表示式處理物件整個邏輯就是 使用語句來實現...

「中序表示式」轉換為「前序表示式」 「後序表示式」

首先看下面所示 中序表示式 2 3 2 1 3 4 1 前序表示式 23 21 3 41 後序表示式 23 21 341 中序表示式對我們而言是很直觀的 我們平時接觸的就是這個 但計算機處理起來比較麻煩 括號 優先順序之類的 前序和後序表示式中沒有括號,而且在計算中只需單向掃瞄,不需要考慮運算子的優...