C++程式:將long型別變數轉換為int型別


C++支援各種不同的資料型別來適應不同的資料表示和大小。可用於表示C++中數值的資料型別有int、long、float和double。int和long用於表示整數值,而float和double用於表示小數值。int和long都包含整數值,但有一點區別,即int的大小為4位元組,而long的大小為8位元組。

將long轉換為int可以透過兩種不同的方式完成,一種是透過隱式轉換,另一種是使用顯式轉換。顯式型別轉換需要在程式碼中提及結果資料型別,而隱式型別轉換由編譯器本身完成。顯式型別轉換可以進一步透過兩種方式完成,將在後面進一步描述。首先,描述隱式轉換。

語法

將long型別變數隱式轉換為int型別 -

long a;
int b = a;

隱式轉換完全由編譯器處理,程式設計師無需為轉換做任何額外工作。源變數只需要賦值給目標變數。

演算法

  • 例如,在long型別的變數var2中輸入資料。
  • 將long型別的變數賦值給int型別的變數,例如var1。
  • 列印該值。

示例

#include <iostream> using namespace std; int solve(long var2) { return var2; } int main() { int var1; long var2 = 1034; var1 = solve(var2); cout<< "The value of var1 is: "<< var1 << endl; cout<< "The size of var1 is: " << sizeof(var1) << endl; cout<< "The size of var2 is: " << sizeof(var2) << endl; return 0; }

輸出

The value of var1 is: 1034
The size of var1 is: 4
The size of var2 is: 8

在這個例子中,可以看到變數var1是int型別,變數var2是long型別。變數var2初始化為值1034,並將其賦值給var1。可以看到,編譯器進行了隱式型別轉換,並將該值作為整數儲存在變數var1中。輸出中也顯示了變數的大小以驗證轉換,儘管這只是為了演示目的,並不需要每次都應用。

C++中的顯式型別轉換可以透過兩種方式完成;一種是透過使用強制轉換運算子,另一種是在賦值時提及結果變數的資料型別。讓我們從強制轉換運算子開始。

使用強制轉換運算子

C++中有四種不同的強制轉換運算子可用。在本文中,我們只使用static_cast運算子。

語法

long a;
int b = static_cast<int> (a);

演算法

  • 例如,在long型別的變數var2中輸入資料。
  • 使用static_cast運算子將long型別的變數賦值給int型別的變數(例如var1)。
  • 列印該值。

示例

#include <iostream> using namespace std; int solve(long var2) { return static_cast<int>(var2); } int main() { int var1; long var2 = 4031; var1 = solve(var2); cout<< "The value of var1 is: "<< var1 <<endl; cout<< "The size of var1 is: " << sizeof(var1) << endl; cout<< "The size of var2 is: " << sizeof(var2) << endl; return 0; }

輸出

The value of var1 is: 4031
The size of var1 is: 4
The size of var2 is: 8

輸出與之前嘗試的程式碼片段類似。在顯式型別轉換中完成了相同的事情;除了這次使用者必須提及轉換過程。

賦值時提及資料型別

與之前的方法類似,我們在轉換時也在右側源變數之前提及結果資料型別。在這種情況下,不需要額外的運算子。

語法

long a;
int b = (int) a;

演算法

  • 例如,在long型別的變數var2中輸入資料
  • 將long型別的變數賦值給int型別的變數(例如var1),並提及結果資料型別。
  • 列印該值。

示例

#include <iostream> using namespace std; int solve(long var2) { return (int)var2; } int main() { int var1; long var2 = 3104; var1 = solve(var2); cout<< "The value of var1 is: "<< var1 << endl; cout<< "The size of var1 is: " << sizeof(var1) << endl; cout<< "The size of var2 is: " << sizeof(var2) << endl; return 0; }

輸出

The value of var1 is: 3104
The size of var1 is: 4
The size of var2 is: 8

這種特殊的轉換方法也稱為“C風格的強制轉換/轉換”,因為它是C語言中進行顯式型別轉換的方式。它也適用於C++;我們可以從結果中看到。

結論

不同型別變數之間的轉換在C++或任何程式語言中都很常見,因為不同的資料型別提供了不同的方式來表示和操作相同型別的資料。我們主要使用兩種型別的轉換,即隱式和顯式型別轉換,來在long和int之間進行轉換。但是,int的大小為4位元組,long的大小為8位元組,因此轉換大於最大允許整數值的值將導致錯誤的資料轉換以及資料丟失。因此,資料型別之間的轉換需要謹慎進行。

更新時間: 2022年10月19日

5K+ 次檢視

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告