C++中的基本變數型別介紹
1.cpp變數型別
- 變數實際上是儲存空間的名稱,cpp中每個變數都有指定的型別,型別決定變數儲存的大小和佈局,該範圍內的值都可以儲存在記憶體中,運算子可以作用在變數上。
- 變數名可以是字母 數字 下劃線組成,必須以字母或下劃線開頭。區分大小寫
- 幾種基本的變數型別:
2.cpp中的變數定義
- 變數定義就是告訴編譯器在何處建立變數的儲存,以及如何建立變數的儲存。變數的定義指定一個資料型別,幷包含該型別的一個或多個變數的列表,例如:
格式:type variable_list;
- type必須是基本資料型別或使用者自定義的資料型別(如 類),variable_list可以由一個或多個識別符號名稱組成,多個識別符號之間用逗號分隔,例如:
int i, j, k; // 宣告並定義了變數i, j, k,指示編譯器建立型別為int的名為i,j,k的變數 char c, d, e; float f, ss; double d;
- 變數可以在宣告的時候被初始化,初始化器由一個等號後跟一個常量表示式組成,例如:
格式: type variable_name = value; extern int d = 3, f = 6; // d 和 f 的宣告 int d = 3, f = 5; // 定義並初始化 d 和 f byte z = 22; char x = 'x';
- 不帶初始化的定義:帶有靜態儲存持續時間的變數會被隱式初始化為 NULL(所有位元組的值都是 0),其他所有變數的初始值是未定義的
3.cpp中的變數宣告
- 變數宣告向編譯器保證變數以給定的型別和名稱存在,這樣編譯器在不需要知道變數完整細節的情況下也能繼續進一步的編譯。變數宣告只在編譯時有它的意義,在程式連線時編譯器需要實際的變數宣告。
- 當使用多個檔案且只在其中一個檔案中定義變數時(定義變數的檔案在程式連線時是可用的),變數宣告就顯得非常有用。您可以使用 extern 關鍵字在任何地方宣告一個變數。雖然您可以在 C++ 程式中多次宣告一個變數,但變數只能在某個檔案、函式或程式碼塊中被定義一次。
int main(){
// 變數的定義
int a, b;
int c;
float f;
// 實際初始化
a = 10;
b = 20;
c = a + b;
cout << c << endl;
f = 70.0 / 3.0;
cout << f << endl;
return 0;
}
- 同樣的,在函式宣告時,提供一個函式名,而函式的實際定義則可以在任何地方進行。
// 變數的宣告
extern int a, b;
extern int c;
extern float f;
// 函式宣告
int func();
int main(){
// 變數的定義
int a, b;
int c;
float f;
// 實際初始化
a = 10;
b = 20;
c = a + b;
cout << c << endl;
f = 70.0 / 3.0;
cout << f << endl;
// 函式呼叫
int i = func();
return 0;
}
// 函式定義
int func(){
return 0;
}
4.cpp中的左值和右值
- cpp中的兩種型別的表示式:
- 左值:指向記憶體位置的表示式被稱為左值(lvalue)表示式。左值可以出現在賦值號的左邊或右邊。
- 右值:儲存在記憶體中某些地址的數值。右值是不能對其進行賦值的表示式,也就是說,右值可以出現在賦值號的右邊,但不能出現在賦值號的左邊。
- 變數是左值,因此可以出現在賦值號的左邊。數值型的字面值是右值,因此不能被賦值,不能出現在賦值號的左邊。
int g = 20;
10 = 20; 報錯!
5.變數的型別轉換
- 變數的型別間是可以互相轉換的,轉換又分為自動轉換和強制轉換。
-
自動轉換規則
- 若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。
- 轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。
- a、若兩種型別的位元組數不同,轉換成位元組數高的型別
- b、若兩種型別的位元組數相同,且一種有符號,一種無符號,則轉換成無符號型別
- 所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表示式,也要先轉換成double型,再作運算。
- char型和short型參與運算時,必須先轉換成int型。
- 在賦值運算中,賦值號兩邊量的資料型別不同時,賦值號右邊量的型別將轉換為左邊量的型別。如果右邊量的資料型別長度比左邊長時,將丟失一部分資料,這樣會降低精度:
int aa = 1; double bb = 2.1; aa = bb; cout << "aa = " << aa << endl; //輸出為 2,丟失小數部分 int a = 1; double b = 2.1; cout << "a + b = " << a + b << endl; //輸出為a + b = 3.1
-
強制轉換規則
- 強制型別轉換是通過型別轉換運算來實現的。其一般形式為:**(型別說明符)(表示式)**其功能是把表示式的運算結果強制轉換成型別說明符所表示的型別
int a = 1; double b = 2.1; cout << "a + b = " << a + (int)b << endl; //輸出為a + b = 3
-
6.變數定義與宣告的區別
- 定義包含了宣告,但是宣告不包含定義,變數宣告是不會為變數開闢記憶體空間的,只有當宣告也是定義時,宣告才可以有初始化,初始化必須有儲存空間來進行初始化。如:
int a = 0; //定義並宣告瞭變數 a
extern int a; //只是宣告瞭有一個變數 a 存在,具體 a 在哪定義的,需要編譯器編譯的時候去找。
相關文章
- c++基本型別和變數C++型別變數
- 學習變數的目的及基本資料型別介紹變數資料型別
- c++中的變數型別_C ++中的變數C++變數型別
- C++ 列舉型別介紹C++型別
- 變數以及八大資料型別介紹變數大資料資料型別
- C++教程-----C++變數型別和變數的定義C++變數型別
- C++入門教程(5):基本資料型別和變數C++資料型別變數
- C#學習 [型別系統] 基本型別介紹(10)C#型別
- golang資料型別基本介紹與使用Golang資料型別
- C++ 變數型別查詢C++變數型別
- Python 入門系列 —— 5. 三大變數型別介紹Python變數型別
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- c++ typeid().name()輸出變數型別C++變數型別
- JavaScript中的預解析(變數提升)介紹!JavaScript變數
- JavaScript中的預解析(變數提升)介紹JavaScript變數
- string型別介紹型別
- c++基本型別筆記C++型別筆記
- C++ 使用者輸入與資料型別詳解:建立基本計算器及變數型別C++資料型別變數
- C C++變數型別大小和範圍C++變數型別
- c++任意變數型別獲取相關C++變數型別
- c++語言中類的私有型別或保護型別成員變數C++型別變數
- 簡單介紹SQLserver中的declare變數用法SQLServer變數
- JAVA_資料型別介紹與基本資料型別之間的運算規則Java資料型別
- C++ 引用型別簡介C++型別
- javascript中如何判斷變數的型別?JavaScript變數型別
- C/C++獲取變數型別並輸出C++變數型別
- 語言型別介紹及其Python的語言型別型別Python
- postgreSQL 索引(二)型別介紹SQL索引型別
- 【Redis】資料型別介紹Redis資料型別
- SQL | JOIN 型別使用介紹SQL型別
- http代理型別格式介紹HTTP型別
- Rust 資料型別介紹Rust資料型別
- 介紹PostgreSQL的陣列型別FUSQL陣列型別
- 常見的代理IP型別介紹型別
- PL/SQL基本結構---PLSQL複合型別---表型別變數tableSQL型別變數
- 修改全域性變數時,可變型別和不可變型別的區別變數型別
- javascript中對變數型別的判斷方法JavaScript變數型別
- hazelcast的基本介紹AST