天天看点

c语言基础—数据类型

C语言中有四种基本数据类型—整型、浮点型、指针和聚合类型(数组和结构等)。其他类型由此四种派生而成。

1、  整数类型

整型包含:字符(char),整型(int),长整型(long)和短整型(short),都分为有符号(signed)和无符号(unsigned)两种。

按位数有short<=int<=long,其中short至少16位,long至少32位。因此虽然直观上会认为short比较短,long比较长,但实际上两者可能一样长,而int的位数则由编译器决定。因此在设计数值计算时,应该确定其位数,做好溢出处理。

字符char占用八位,设计的目的在于容纳字符数据,但本质上是小整型。char在用关键字signed/unsigned修饰的时候与其他几种整型有一个区别。一般,对int,long,short,当不用signed/unsigned修饰时,默认为signed,但char的默认值与编译器有关。

                  下表为不同类型的位数和范围

类型 占用位数 数值范围
char 8位 (一般只用0~127)
signed char 8位 -127~127
unsigned char 8位 0~255
(signed) int 16位或32位
unsigned int 同int
(signed) long (int) 不小于32位 -2147483647~2147483647
unsigned long (int) 同long 0~4294967295
(signed) short (int) 不小于16位 -32767~32767
unsigned short (int) unsigned short (int) 0~65535
(signed) long long (int) 64位 范围太长
(unsigned) long long (int) 同long long 范围太长

一、整型变量的声明和初始化

整型变量的声明形式为: 关键字 变量名;(中间空格隔开)

如:

int a;

初始化则是在声明之后对变量赋初始值

如:

直接int a = 1;

或 int a;a = 1;

最常见的是按十进制赋值,也可按八进制和十六进制赋值,在数字前面加一个0则为八进制赋值,加0x或0X则为十六进制赋值。

当用八进制赋值时,数字不在0~7之间会提示错误,十六进制亦然。

如:

int a = 012;//8进制12,十进制为10。

                  inta = 0x11;//十六进制11,十进制为17。

                  inta = 018;//编译器提示错误。

         计算机通过编码将特定的字符用特定的整数值来表示,一般采用ASCII码。因此对char类型的赋值有两种形式。一种是直接数字赋值,一种是用字符赋值,字符由’ ’括起来。

                  如:

                           chara = ‘A’;

                           chara = 96;//两者都是声明字符变量a,初始化为字符A。

                           chara;a = “X”;//错误,正确方式:a = ‘X’;

二、整型常量

当代码中用到如123这样的数字时,编译器以最小可容纳该数值的类型来存储相应数字。也可以通过一些后缀来指定存储类型。L(或小写l)后缀表明数字为long类型,U(或小写u)后缀表明数字为unsigned类型,两者可以组合使用。

如:

                  123U为unsigned int 类型

                  123UL为 unsigned long 类型

                  123ULL为unsigned long long 类型

                  字符常量一般以’单个字符’来表示。

2、  浮点型

浮点型包含float,double和long double类型,用来表示不同精度的小数。本文不做讨论。

3、  指针

变量的值在计算机的内存中占用一个特定的位置和相应大小的空间。内存与地址一一对应,因此,通过地址就能得到其上变量的值。指针是一种值为地址的数据类型。本文不做详细讨论。

4、  格式化输出

Printf()、scanf ()函数时与程序通信的I/O接口。调用printf()通过特定的转换说明符可以打印出相应的数据。

常用转换符:

转换说明 输出
%c 一个字符
%s 字符串
%d 有符号十进制整数
%u 无符号十进制整数
%o 无符号八进制整数
%x或%X 无符号十六进制整数
%p 指针
%f 十进制浮点数
%e或%E 浮点数的e-计数法,E-计数法

修饰符:

修饰符 说明
h 输出short类型。%hd,%hx,%hu分别为十进制short,十六进制short,十进制unsigned short
l 输出long类型。%ld,%lu分别输出 long int和unsigned long int
ll 输出long long类型。%lld,%llu,同上
# 输出进制格式。%#x,%#X,%#o分别输出0x,0X,0这三种进制的前缀
%数字 输出的位宽,%7输出为7位宽,数字向右对齐,数字为负时,相左对齐。

继续阅读