跳轉到內容

現代 C++:精華部分/切換操作

來自 Wikibooks,開放世界中的開放書籍

在上一章中,您收到了第一個任務:編寫一個簡單的計算器。當時,if 語句是您唯一可以用來做出決定的方法;本章介紹了 **switch 語句**,它的工作方式類似於 if 語句,但更適合像計算器這樣的問題。

程式碼

[編輯 | 編輯原始碼]

這是一個基於 switch 語句構建的計算器

#include <iostream>
#include <string>

int main()
{
	std::string input;
	float a, b;
	char oper;
	float result;

	std::cout << "Enter two numbers and an operator (+ - * /).\n";
	
	// Take input.
	std::cin >> input;
	// Parse it as a float.
	a = std::stof(input);

	// Take input.
	std::cin >> input;
	// Parse it as a float.
	b = std::stof(input);

	// Take input.
	std::cin >> input;
	// Get the first character.
	oper = input[0];

	switch (oper)
	{
	case '+':
		result = a + b;
		break; // DON'T
	case '-':
		result = a - b;
		break; // FORGET
	case '*':
		result = a * b;
		break; // THESE
	case '/':
		result = a / b;
		break; // !!!
	}

	std::cout << a << " " << oper << " " << b << " = " << result << "\n";
}

std::stof 類似於 std::stoi,但它轉換為浮點數。

input[0] 是字串 input 中的第一個字元。每當您看到帶有數字(或變數)的方括號時,數字都是從 0 開始的。這意味著人們通常所說的“第一個”字元在索引 0 處,“第二個”字元在索引 1 處,依此類推。

switch 語句與您為自己的計算器編寫的 if-else 鏈具有完全相同的效果。請注意,每個 case 標籤都有一個匹配的 break 語句;請確保您編寫的任何 switch 語句都是這樣,因為否則您可能會得到一些非常奇怪的行為。具體來說,如果沒有 break 語句,控制將直接流過所有標籤,導致它們下面的邏輯在多種情況下被執行。

  • 探索當您將一個 int 除以另一個 int 時會發生什麼,以及這與使用兩個 float 和一個 int 和一個 float 進行相同的操作有何不同。與您的講師討論您的發現。
switch 語句
使用它的表示式來選擇要跳轉到的哪個 case 標籤。
現代 C++:精華部分
 ← 現在變得有趣了。 切換操作 迴圈操作 → 
華夏公益教科書