C程序设计(1)-数据类型

为了刷算法方便,回顾一遍C语言

https://www.bilibili.com/video/BV1At411g7ou 零基础课程

基本数据类型(不可再分):

  整型:

  短整型(short)

  整型(int)

  长整型(long)

  无符号整型(unsigned int)

  浮点型:

  单精度(float)

  双精度(double)

  扩展精度(long double)

  字符型(char)

  空值型(void)

构造数据类型(由多个类型组合而成):

  数组

  结构体(struct)

  公用体(union)

  指针

对于基本数据类型所占字节数,C标准中没有给出具体规定哪个基本类型对应多少字节,而且其与机器、OS、编译器有关,比如:同样是在32bits的操作系统,VC++的编译器下int类型为占4个字节、而tuborC下则是2个字节。

所以int,long int,short int的宽度都可能随编译器而异,但有几条铁定的原则(ANSI/ISO制订): 

  • sizeof(short int)<=sizeof(int)

  • sizeof(int)<=sizeof(long int)

  • short int至少应为16位(2字节)

  • long int至少应为32位

不同位数编译器下的基本数据类型所占的字节数:

16位编译器:

short int: 2个字节

int: 2个字节

long: 4个字节

long long: 8个字节

unsigned int: 2个字节

unsigned long: 4个字节

float: 4个字节

double: 8个字节

char: 1个字节

char*(即指针变量): 2个字节 


32位编译器:

short int: 2个字节

int: 4个字节

long: 4个字节

long long: 8个字节

unsigned int: 4个字节

unsigned long: 4个字节

float: 4个字节

double: 8个字节

char: 1个字节

char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节;同理64位编译器)


64位编译器:

short int: 2个字节

int: 4个字节

long: 8个字节

long long: 8个字节

unsigned int: 4个字节

unsigned long: 8个字节

float: 4个字节

double: 8个字节

char: 1个字节

char*(即指针变量): 8个字节

机器字长:是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。机器字长也就是运算器进行定点数运算的字长,通常也是CPU内部数据通路的宽度,现在一般为32位(4个字节)、64位(8个字节),也有16位(2个字节)的。

在大多数计算机上:

  short int表示2个字节长,short只能修饰int,short int可以省略为short;

  long只能修饰int和double,修饰为long int(可以省略为long)时,一般表示4个字节,修饰long double时,一般表示10个字节;

  unsigned和signed只能修饰char和int,一般情况下,默认的char和int为signed,实型数float和double总是有符号的,不能用unsigned修饰;

  bool型(布尔型,也称逻辑型)数据的取值只能是false(假)或true(真),bool型数据所占的字节数在不同的编译系统中可能不一样,在VC++6.0编译环境中bool型数据占一字节。

  用sizeof(数据类型)可以确定某数据类型的字节长度,例如用下面的语句:
    cout <<”size of int is” <<sizeof(int) <<endl;
    在16位计算机上将输出:
    size Of int is 2

原文地址:https://www.cnblogs.com/zimsky/p/12611663.html