C语言学习笔记之数据类型

1、整数类型

1.1 类型

类型 位数
short(或short int) 16位
int 16位或32位
long (或long int) 32位
long long(或long long int) 64位

注意:
(1)如果在long类型等于int类型的系统中编写代码,当确实需要32位整数是,应使用long类型,以便使程序移植到int类型为16位的机器上后仍然可以正常工作。
(2)通常,数字常量以int类型存储,如果使用1000000这样的数字int类型不能表示时,编译器会视其为long int类型,如果仍然不够,会视其为long long int类型。
(3)如果希望把一个数字常量作为long类型对待,可以使用‘l’或‘L’后缀。使用’L’后缀是更好的选择,因为‘l’与数字1很相近。
(4)与之类似,可以使用‘ll’或者‘LL’后缀标识long long类型。

1.2 数制

数制 表示方法
八进制 前缀‘0’
十进制 无前缀
十六进制 前缀‘0x’或者‘0X’

这种使用不同数制系统的选择是为了方便而提供的,它并不影响数字的存储。无论16、020、0x10,计算机内部都是使用二进制编码进行存储。

2、字符类型

表示方法 例子
单引号 char ch = ‘A’;
ASCII码 char ch = 65;
转义序列 char ch = ‘\n’;
反斜杠 +数字 char ch = ‘\020’;

注意:
(1)上述‘反斜杠 +数字’表示方法中,数字为八进制或者十六进制,如果没有用‘x’前缀,则为八进制,

char ch1 = '\020';   
char ch2 = '\20';  
char ch3 = '\x10';

所以上述三个例子效果相同。

(2)C语言将字符常量视为int类型存储。

char grade = 65;    \*对于ASCII,这是可以的;但这是一种不好的编程风格*\
char grade2 = 'A';  \*与上一条有类似的效果*\

char grade = 'FATE';
printf("%c", grade);    //将打印出‘E’,因为C将这四个独立的8位
                        //ASCII码存储在一个32位的单元中。所以如果
                        //把这个字符常量赋给一个char变量,那么只有
                        //最后8位会起作用。

(3)如果再转义序列和其对应的ASCII码之间做出选择,应该使用转义序列,因为转义字符更容易记忆,而且移植性更好。
(4)当需要使用数值编码时,使用‘\032’而不是032。首先,‘\032’能更清晰的表达程序员表示一个字符编码的意图;其次,‘\032’这样的转义序列可以嵌入到C字符串中,比如字符串“hello!\007\n”中就嵌入了‘\007’。

3、浮点数类型

3.1 浮点类型

float:系统的基本浮点类型。至少能精确表示6位有效数字。
double:范围(可能)更大的浮点类型。能表示比float类型更多的有效数字以及更大的指数。
long double:范围(可能)更大的浮点类型。能表示比double类型更多的有效数字以及更大的指数。

3.2 表示方法

float a = -1.34E-12;    //e或者E表示10的指数
float b = 2.23e21;
float c = 0xa.1fp10;    //p或者P表示2的指数(十六进制表示法)

4、复数和虚数类型(用的不多,省略)

注意:
char类型肯定是1字节,因为C把char类型的长度定义为1个字节。所以在char类型长为16位,double类型长为64位的系统中,sizeof将报告double类型有4字节长。

你可能感兴趣的:(C语言学习笔记)