歡迎關註我的公眾號“老餘筆記”,也可以訪問我的個人博客www.yuxiaoshao.cn 有需要的可以qq交流學習1316677086 或者加入我的群里交流:901648700 一起分享資源,交流學習 數據類型 數據類型就是用來聲明不同類型的變數或函數的一個廣泛的系統。變數的類型決定了變數存儲在記憶體 ...
歡迎關註我的公眾號“老餘筆記”,也可以訪問我的個人博客www.yuxiaoshao.cn
有需要的可以qq交流學習1316677086 或者加入我的群里交流:901648700 一起分享資源,交流學習
數據類型
數據類型就是用來聲明不同類型的變數或函數的一個廣泛的系統。變數的類型決定了變數存儲在記憶體中占用的空間。
數據類型分為
基本數據類型/算數類型:數值類型(整數類型,浮點型),字元型char
構造數據類型:數組、結構體、共用體、枚舉
指針類型
void類型(空類型)void
基本數據類型
我們常用的數字有整數和小數。所以基本數據類型類型又分為了整數類型即整型(當然這裡的整型不是南韓的整形)和浮點類型即浮點型;
註意,各種類型的存儲大小與系統位數有關,但目前通用的以64位系統為主。
整型
數據類型 | 占用大小 |
---|---|
short 短整型 | 2 位元組 取值範圍:-32,768 到 32,767 |
int 整型 【常用】 | 2或4個位元組(一般都占用2個位元組) 取值範圍:-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
long 長整型 | 4 位元組 取值範圍:-2,147,483,648 到 2,147,483,647 |
其實char也是int類型,在電腦中,字元也是通過對照ACILL表的int數值轉換的。
想知道ACILL表是啥自己百度
字元型
數據類型 | 占用大小 |
---|---|
char 字元型【常用】 | 1位元組 取值範圍:(-128 到 127 或 0 到 255) |
因為-128 到 127 或 0 到 255也在int【-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 】的取值範圍之內,所以在小於127大於-128的範圍里的時候 int可以和char類型相互轉換對應的字元
浮點類型
數據類型 | 占用大小 |
---|---|
float 單精度浮點 【常用】 | 4 位元組 取值範圍(1.2E-38 到 3.4E+38 )6 位小數 |
double 雙精度浮點 【常用】 | 8 位元組 取值範圍 (2.3E-308 到 1.7E+308 )15 位小數 |
long double | 16 位元組 取值範圍(3.4E-4932 到 1.1E+4932 )19 位小數 |
計算某個變數在特定平臺上的準確大小
使用sizefof運算符
#include <stdio.h>
#include <limits.h>
int main()
{
//表達式 sizeof(type) 得到對象或類型的存儲位元組大小。
printf("int 存儲大小 : %lu \n", sizeof(int));
//%lu 為 32 位無符號整數
return 0;
}
類型轉換
自動類型轉換
C 語言中如果一個表達式中含有不同類型的常量和變數,在計算時,會將它們自動轉換為同一種類型;
int i = 5.5;
/*這裡的5.5預設是double類型,
通過C的自動轉換機制,會攝取掉小數部分,只保留整數部分*/
自動轉換規則:
浮點數賦給整型,該浮點數小數被捨去; 例:int a = 1.2; //這裡的.2會被捨去 只會保留整數部分
整數賦給浮點型,數值不變,但是被存儲到相應的浮點型變數中; 例 float b = 5; //這裡的 5 會被轉換成5.0 作為浮點型存儲在記憶體里
強制類型轉換
使用(),在括弧里填寫需要轉換的類型
使用基本數據類型的時候註意,從大範圍強制轉換為小範圍會存在記憶體溢出的現象
#include <stdio.h>
int main () {
float f,x=3.6,y=5.2;
int i=4,a,b;
a=x+y;
b=(int)(x+y);//(x+y)是浮點型 這裡會強制轉換為int型
f=10/i;
printf("a=%d,b=%d,f=%f,x=%f\n",a,b,f,x);
return 0 ;
}
C中的“布爾類型”
在C語言里,是沒有bool類型的,所以 C 語言判斷真假時以 0 為假,非 0 為真(一般用1)。
C99 提供了 _Bool 型,所以布爾類型可以聲明為 _Bool flag。
_Bool 依然仍是整數類型,但與一般整型不同的是,_Bool 變數只能賦值為 0 或 1,非 0 的值都會被存儲為 1。
C99還提供了一個頭文件 <stdbool.h> 定義了 bool 代表 _Bool,true 代表 1,false 代表 0。
只要導入 stdbool.h ,就能非常方便的操作布爾類型了
#include <stdio.h>
//導入 stdbool.h 來使用布爾類型
#include <stdbool.h>
//計算n!,n的值在main中定義
int main ()
{
int n = 10; //計算疊乘數
int sum = 1; //用來存放疊乘的結果
bool flag = false; //疊乘標記
int num = n; //迴圈次數
while( !flag )
{
sum = sum * (num--);
//當num=1時結束迴圈
if( num == 1)
{
flag = true;
}
}
printf ("%d的疊乘值為 %d \n", n, sum);
return 0;
}