C語言:數據類型(基本數據類型)、類型轉換(自動轉換、強制轉換)

歡迎關注個人公衆號「老餘筆記」,也能夠訪問個人我的博客www.yuxiaoshao.cn
有須要的能夠qq交流學習1316677086 或者加入個人羣裏交流:901648700 一塊兒分享資源,交流學習數組

數據類型

數據類型就是用來聲明不一樣類型的變量或函數的一個普遍的系統。變量的類型決定了變量存儲在內存中佔用的空間。函數

數據類型分爲
基本數據類型/算數類型:數值類型(整數類型,浮點型),字符型char
構造數據類型:數組、結構體、共用體、枚舉
指針類型
void類型(空類型)void
學習

在這裏插入圖片描述

基本數據類型

咱們經常使用的數字有整數和小數。因此基本數據類型類型又分爲了整數類型即整型(固然這裏的整型不是韓國的整形)和浮點類型即浮點型;指針

注意,各類類型的存儲大小與系統位數有關,但目前通用的以64位系統爲主。code

整型

數據類型 佔用大小
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類型相互轉換對應的字符blog

浮點類型

數據類型 佔用大小
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;

}
相關文章
相關標籤/搜索