C/基本数据类型
< C
C语言中提供多种数据类型,包括整型、字符型、实型、数组、指针、结构体等,它们拥有如下的关系:
- 基本类型
- 整數型
- 短整型(short)
- 整型(int)
- 长整型(long)
- 字符型(char)
- 实數型
- 单精度型(float)
- 双精度型(double)
- 枚举型(enum)
- 整數型
- 构造类型
- 数组类型
- 结构体型(struct)
- 共用体型(union)
- 指针类型
- 空类型(void)
整數
编辑C語言中有多种大小不同的整數型態(integer)。整型以二进制整數存儲,分為兩種形態:
- 有符號(signed),可以儲存負整數、0、正整數;
- 無符號(unsigned),只可以儲存0或正整數。
#include <stdio.h>
int main(int argc, char* argv[])
{
int a = -5;
printf("%d\n", a);
// 輸出 -5
unsigned int b = 3;
printf("%d\n", b);
// 輸出 3
}
在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、double 及 long double (C99)三種型態。
一般在64位元的電腦上,宣告 float 時會占用32位元的空間,double 是64位元,long double 則是128位元。
也因此,double 與 long double 在表示多位浮點數時較 float 準確。
#include <stdio.h>
int main(int argc, char* argv[])
{
float a = 5.0;
printf("%f\n", a );
// 輸出 5.0
double b = 6.0;
printf("%lf\n", b );
// 輸出 6.0
}
字元(char)
编辑字元型態,使用的時候以單引號包起來,裡面只能有一個字元。
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("%02x\n", '.' );
printf("%c", 0x2f );
}
字串
编辑C 語言中並不存在字串,而是由一連串的字元組合起來、並以最後一個字元'\0'結束來模擬字串。 字串以雙引號包起來,請先閱讀「陣列」章節。 請以如下範例來使用字串:
#include <stdio.h>
int main(int 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 main(int 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 );
}