1. 程式人生 > 其它 >C語言基本資料型別筆記

C語言基本資料型別筆記

技術標籤:C語言c語言

C語言基本資料型別筆記

摘自C primer plus

  • 位、位元組和字
  • 整數型別和浮點數型別

位 (bit):最小儲存單元,可以儲存0或1

位元組(byte):常用計算機儲存單元,幾乎對所有機器,1位元組均為8位

字(word):設計計算機時給定的自然儲存單位。對於8位微型計算機1個字長只有8位。個人計算機字長增至16位、32位,直至目前64位。


  • int型別

其範圍依計算機而異 ,早期16位 ,目前32位 、64位,一般儲存一個int 要佔用一個機器字長。
ISO C規定int型別範圍最小為-32768 ~ 32767(2^{16},除去符號位)。

int main(void)//以十進位制 十六進位制 八進位制列印100
{
	int x = 100;
	
	printf("dec = %d; octal = %o; hex = %x\n", x, x, x );
	
	//顯示進位制字首 
	printf("dec = %d; octal = %#o; hex = %#x\n", x, x, x );

	return 0;
}

其他整型:short 型別佔用儲存空間不能多於int型別; long型別佔用儲存空間不能少於int 型別


  • char型別

char型別用於儲存字元(字母或標點符號),實際儲存的是整數而不是字元,計算機用編碼處理字元。C 將1位元組定義為char型別佔用的位數。

// 顯示字元程式碼編號
int main(void)
{
	char ch;
	char cb;
    cb = 'T'; //字元常量
    cb = "T" ;//字串
	printf("Please enter a character.\n");
	scanf("%c", &ch);
	printf("The code for %c is %d\n",ch, ch );
	return 0;
}


  • float、double型別

​​​​​​​C規定 :float型別必須能表示6位有效數字(至少精確表示小數點後6位有效數字),且取值範圍至少是10^{-37}~10^{37}
通常系統儲存一個浮點數要佔用32位,8位用於表示指數的值和符號,剩下24位用於表示非指數部分。
double(雙精度)型別與float型別最小取值範圍相同但必須至少能表示10位有效數字。一般情況下double型別佔用64位而不是32位。

int main(int argc, char const *argv[])
{
	float aboat = 32000.0;

	//以兩種方式顯示float型別的值
	printf("%f can be written %e\n",aboat, aboat );
	return 0;
}

  • 資料型別大小

提供可移植型別 stdint.h inttypes.h

在32位系統中會把int32_t作為int的別名

int為16位、long為32位的系統會把int32_t作為long的別名

#include<stdio.h>
#include <inttypes.h> //使用配套巨集"PRId64"進行列印 unsigned long long int

// 列印當前系統指定型別大小 
// C99 C11提供%zd轉換說明匹配sizeof的返回型別(size_t)
int main(int argc, char const *argv[])
{
	int apples = 3;//正確

    int oranges = 3.0;//不提倡


    //精度丟失
    int cost = 12.99; //丟棄小數部分

    float pi = 3.1415926536;//float只保證前6位精度
    
	printf("Type int has a size of %"PRId64"bytes.\n", sizeof(int));
	printf("Type char has a size of %"PRId64" bytes.\n", sizeof(char));
	printf("Type long has a size of %"PRId64" bytes.\n", sizeof(long));
	printf("Type long long has a size of %"PRId64" bytes.\n", sizeof(long long));
	printf("Type double has a size of %"PRId64" bytes.\n", sizeof(double));
	printf("Type long double has a size of %"PRId64" bytes.\n", sizeof(long double));
	return 0;
}