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 );
}