C/基本數據類型

維基教科書,自由的教學讀本
< C
跳至導覽 跳至搜尋

C語言中提供多種數據類型,包括整型、字符型、實型、數組、指針、結構體等,它們擁有如下的關係:

  • 基本類型
    • 整型
      • 短整型(short)
      • 整型(int)
      • 長整型(long)
    • 字符型(char)
    • 實型
      • 單精度型(float)
      • 雙精度型(double)
    • 枚舉型(enum)
  • 構造類型
    • 數組類型
    • 結構體型(struct)
    • 共用體型(union)
  • 指針類型
  • 空類型(void)


整型[編輯]

C語言中有多種大小不同的整型(integer)。整型以二進位整數存儲,分為兩種形態:

  • 有符號(signed),可以儲存負整數、0、正整數;
  • 無符號(unsigned),只可以儲存0或正整數。
#include <stdio.h>
int mainint argc, char* argv[]
{
    int a=5;
    printf("%d", a);
}

C語言中,整型共有short int、int、long int、long long int(C99標準加入)四種子類型。在類型前不加unsigned時,對應類型默認為有符號類型。

short int可簡寫為short,佔2字節。int佔4字節。long int可簡寫為long,根據機器不同佔4或8字節。long long int佔8字節。

在C99中,stdbool.h引入了如下三大類整型類型。

格式 解釋 註釋
(u)intx_t 精確佔x位(x/8字節)的整型 x可取8、16、32或64,下同
(u)int_leastx_t 至少佔x位(x/8字節)的整型
(u)int_fastx_t 至少佔x位(x/8字節)且運算快速的整型 如在CPU中,32位整型的運算比16位快,則int_fast16_t也佔4字節

單精度浮點數(float)[編輯]

小數型態。

#include <stdio.h>
int mainint argc, char* argv[]
{
    float b=5.0;
    printf("%f", b );
}

倍精度浮點數(double)[編輯]

小數型態,佔用 float 的兩倍空間,可儲存較精準的小數。

#include <stdio.h>
int mainint argc, char* argv[]
{
    double b=5.0;
    printf("%lf", b );
}

字元(char)[編輯]

字元型態,使用的時候以單引號包起來,裡面只能有一個字元。

#include <stdio.h>
int mainint argc, char* argv[]
{
    printf("%02x\n", '.' );
    printf("%c", 0x2f );
}

字串[編輯]

C 語言中並存在字串,而是由一連串的字元組合起來、並以最後一個字元'\0'結束來模擬字串。 字串以雙引號包起來,請先閱讀「陣列」章節。 請以如下範例來使用字串:

#include <stdio.h>
int mainint argc, char* argv[]
{
    char str[] = "這是範例";
    printf("%s\n", str );
    printf("這是第二行\n" );
}

虛無型態(void)[編輯]

  • 虛無型態表示不屬於任何一種型態。通常用於特殊情況。

布林代數(Boolean)[編輯]

原本的C並沒有Boolean型態,但從1999年ANSI通過擴充規格之後(亦即C99),C也有了此一基本資料型態。

#include <stdio.h>
#include <stdbool.h>
int mainint argc, char* argv[]
{
	printf("true: %d\n", true );
	printf("false:%d\n", false);
}

Unicode[編輯]

要使用 unicode 字串,需要以 wchar_t 來作宣告,輸出時,也需要特別使用支援 unicode 輸出的函數。

#include <stdio.h>
#include <wchar.h>
#include <string.h>
int main( void ) 
{
wchar_t myString[16]={ L"這是字串" };
wprintf(L"%ls\n", (const wchar_t*)myString );
}