- 零基礎學C++程序設計
- 劉媛媛編著
- 1475字
- 2022-05-06 12:28:16
3.2 賦值運算符
變量的作用是指代數據。例如,你要去動物園看動物,那么,動物就是一個變量。具體看什么動物就是為這個變量賦值,或稱為初始化變量的值。在講解變量賦值時,就已經用到了賦值運算符。
3.2.1 賦值運算符簡介
賦值運算符屬于雙目運算符,擁有兩個操作數,符號為“=”。它與數學中的等于號一樣,但是具體的功能卻不同。賦值運算符的操作數位于其左右兩側,作用是將右側的值賦給左側,例如,a=b的含義是將變量b的值賦給變量a,a的值就會變為b的值,如圖3.4所示。

圖3.4 賦值運算符
【示例3-2】下面使用賦值運算符輸出變量b的值。


程序運行結果如下。

3.2.2 數據類型轉換
在飯店吃飯時我們常常會遇到抹零的問題,例如消費了101.5元,抹零后收101元。在此過程中就將浮點類型的數據101.5直接轉換為整數類型數據101進行了計算。
在C++處理數據的過程中,也會遇到這種“抹零”的情況。數據在計算時也會發生數據類型轉換的情況。數據類型轉換在C++中可以分為兩種,第一種是隱式轉換,第二種是顯式轉換。下面對其進行講解。
1.隱式轉換
隱式轉換指C++語言中不需要特別的聲明就可以自動進行數據類型的轉換。例如,從int類型數據轉換到long類型數據就是一種隱式轉換。
隱式轉換適合類型尺寸大小相同或者將小尺寸轉換為大尺寸的情況,類型的轉換方向如圖3.5所示。

圖3.5 類型的轉換方向
在這里char最小,double最大。在轉換過程中遵循將小數據轉換為大數據的原則就不會出現數據丟失的現象。
【示例3-3】下面將字符類型數據隱式轉換為整型類型數據,并進行輸出。

程序運行結果如下。

從運行結果中可以看出,在賦值運算時,字符p的類型發生了改變,b輸出的是字符p的整數類型ASCII碼值112。由于字符類型只占1字節,整型類型占4字節,所以從小尺寸轉換到大尺寸,進行隱式轉換并且沒有出現數據丟失。
在賦值運算中,如果將大數據轉換為小數據,那么在數據隱式轉換過程中就可能會出現數據丟失或數據出錯的問題,在編譯時就會出現警告提示。
【示例3-4】下面將浮點類型數據隱式轉換為短整型數據,并進行輸出。

程序運行結果如下。

從運行結果中可以看出,變量b的值用短整型輸出,超出了短整型的范圍,所以輸出的結果為錯誤值。變量c的值用短整型輸出,丟失了小數位數據。
這兩種情況都是由大尺寸數據隱式轉換為小尺寸數據導致的。所以,在值的傳遞過程中一定要注意類型轉換時的尺寸問題。
在C++語言的賦值運算中,將大尺寸隱式轉換為小尺寸類型時是會出現警告的,由于警告不影響程序運算,所以一般不顯示。此時只要對編譯器進行簡單設置就能看到警告信息。依次單擊“項目|××屬性”,在打開的對話框中將“將警告視為錯誤”選項設置為“是”,如圖3.6所示。

圖3.6 Visual Studio 2019設置警告為錯誤
再次運行程序看到警告信息,如圖3.7所示。

圖3.7 警告信息
2.顯式轉換
顯式轉換是指通過指定語法強制將數據轉換為指定類型。這種轉換需要指定的關鍵字配合來實現。顯式轉換的語法如下。

顯示轉換可以讓程序員直接通過代碼控制數據類型的轉換,讓數據按照指定類型數據進行計算。就像計算超級大的數據時,可以只計算整數部分,舍棄小數部分。這樣做的優點是能控制要計算的數據類型,缺點是會丟失數據的精確度,所以在編寫程序時要“因地制宜”,根據具體情況選擇。
【示例3-5】使用顯式轉換讓表達式的值為整型數據。

程序運行結果如下。

從運行結果中可以看出,當沒有顯式轉換時,表達式a+b在運算時,b的值1會隱式轉換為浮點型1.0,然后1.0+123.3的結果為浮點型數據124.3。
當使用顯式轉換時,表達式(int)a + b在運算時,a的值123.3會顯式轉換為123,然后123+1的結果為整型數據124。
注意:加法運算符(+)的作用與數學中的加號相同,如果不太明白可以先看看后面章節對加法運算符的講解。
- Spring 5.0 By Example
- OpenCV實例精解
- 程序員面試算法寶典
- 數據庫系統原理及MySQL應用教程
- Selenium Design Patterns and Best Practices
- Java面向對象程序開發及實戰
- Python高級機器學習
- MySQL數據庫基礎實例教程(微課版)
- 自然語言處理Python進階
- 零基礎輕松學SQL Server 2016
- Go語言開發實戰(慕課版)
- Instant Zurb Foundation 4
- Python青少年趣味編程
- Python機器學習開發實戰
- Software-Defined Networking with OpenFlow(Second Edition)