C++|變數 前言 在C++編程中,需要用到很多種變數 本文將詳談幾種常見變數 如有錯誤,歡迎指出 零、變數格式 定義並賦值 數據類型 變數名=值; 定義 數據類型 變數名; 賦值 變數名=值; 輸入 cin>>變數名; 輸出 cout<<變數名; 一、數字數據類型 如圖所示,雖然 C++ 提供了許 ...
C++|變數
前言
在C++編程中,需要用到很多種變數
本文將詳談幾種常見變數
如有錯誤,歡迎指出
零、變數格式
- 定義並賦值
數據類型 變數名=值;
- 定義
數據類型 變數名;
- 賦值
變數名=值;
- 輸入
cin>>變數名;
- 輸出
cout<<變數名;
一、數字數據類型
-
如圖所示,雖然 C++ 提供了許多數據類型,但在最廣泛的意義上只有兩個:數字和字元。數字數據類型可直接比較,分為兩類:整數和浮點數。
-
為數字變數選擇最佳數據類型的主要考慮因素如下:
- 變數是需要保存整數還是浮點數值;
- 變數需要存儲的最大數和最小數;
- 變數是需要保存符號(正數和負數)還是只需要保存無符號(只有 0 和正數)數字;
- 存儲在變數中的值所需的小數位數精度;
1.整型數據類型
- 如圖2所示,C++ 有 8 種不同的數據類型用於存儲整數。它們擁有的存儲數據的記憶體位元組和可以存儲的數值範圍是不一樣的。數據類型可以容納的位元組數稱為其大小。一般來說,數據類型的大小越大,那麼它可以容納的值的範圍越大。
這裡我們挑選最常用的 int 和 long long 講
1、int
取值範圍
C++中,int占用4位元組,32比特,數據範圍為-2147483648~2147483647
簡單來說,就是十位以下的整數用int類型
2、long long
對於小點的數字,int足夠了。
但萬一數大了呢?
像1,145,141,919,810這樣的數字,int很顯然是不夠的
這時候,就需要long long 類型了
取值範圍
C++中,long long占用64比特,數據範圍為-9223372036854775808~9223372036854775807
簡單來說,就是十位以上的整數用long long類型
註:long long消耗的記憶體是int的2倍,long long的運算速度比int慢得多,所以能用int解決能滿足有效輸出時,儘量不要使用long long。
3、高精度
在一些題目中,往往會出現一些天文數字,
比如114514114514114514114514114514114514
這時候,就需要使用高精度了。
高精度演算法:屬於處理大數字的數學計算方法,是用電腦對於超大數據的一種模擬加,減,乘,除等運算。對於非常龐大的數字無法在電腦中正常存儲,於是,將這個數字拆開,拆成一位一位的存儲到一個數組中, 用一個數組去表示一個數字,這樣這個數字就被稱為是高精度數。
高精度數是通過字元數組(char[ ])或 字元串(string), 將一個大數字拆分為若幹位從而儲存的。
由於網上教程很多,不多敘述
推薦
2.浮點型數據類型
- C++中有三種浮點類型
- 按照精度的不同劃分如下:
(1)float: 單精度類型 7位數
(2)double: 雙精度類型 15位數
(3)long double: 長雙精度類型 19位數
在使用這一類數據類型時,記住“越小越好”,能用float就用,最好不用long double
二、字元數據類型
C++不但可以處理數字類型的值,也可以處理字元
字元指的是英文字母及各種符號、數字,通過ASCII碼存儲
常見的字元類型有char與string。
1.ASCII碼
ASCII碼是基於拉丁字母的一套電腦編碼系統,
電腦根據輸入的字元(圖形)以對應的ASCII碼值存儲在電腦中。
- 因為ASCII碼值(整數)與字元(字)掛鉤,
所以將字元(非數字)賦值給整數類型(如int),
預設為將對應的ASCII碼值賦值給整數類型。
例如
int a='A';
== //因為A的ASCII碼為65
int a=65;
2.char
char代表一個單獨的字元。
由於是以輸入的字元(圖形)以對應的ASCII碼值存儲在電腦中的,
在比較大小時是以ASCII碼值比較。
- 例如
- 'a' < 'b' 返回1,因為a的ASCII碼是97,b的ASCII碼是98
- 'a' < 'A' 返回0,因為a的ASCII碼是97,A的ASCII碼是65
註:1與0在此為布爾型,下文會講。
3.string
string是字元串類型,相當於由n個char型字元組成。
與字元數組(char[ ])類似,但不需要知道字元個數,不必 擔心記憶體是否足夠。
因此,常用於存儲一些天文數字(高精度)。
使用時需要頭文件<string>
,並配備一系列函數。
三、布爾型(bool)
這是一種特殊的數據類型,只有兩個值:1(真)和 0(假)
例如
//輸入x,判斷x是否為素數。若是,則輸出真(1),否則輸出假(0)。
int x;
cin>>x;//輸入
bool a=1;//預設為是
for (int j = 2; j <= sqrt(x); j++)
{
if (x % j == 0)
{
a=0;//有因數則不是,為假。
}
}
cout<<a<<endl;//輸出