C語言基本資料型別筆記
阿新 • • 發佈:2021-01-03
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(,除去符號位)。
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位有效數字),且取值範圍至少是~。
通常系統儲存一個浮點數要佔用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;
}