三.变量和数据类型
1.变量
int a:在内存中找一块区域,命名为 a,用它来存放整数。a=1这个过程叫做赋值(Assign)。赋值是指把数据放到内存的过程.第二次赋值,会把第一次的数据覆盖.
2.数据类型用来说明数据的类型,确定了数据的解释方式,让计算机和程序员不会产生歧义。
字符型char(length1) ,短整型short(length2) , 整型int(length4) ,长整型 long (length4),单精度浮点型float (length4),双精度浮点型 double(length 8) ,无类型void。
3.数据的长度
是指数据占用多少个字节。占用的字节越多,能存储的数据就越多,对于数字来说,值就会更大,反之能存储的数据就有限。多个数据在内存中是连续存储的,明确指明数据的长度,计算机知道何时存取结束。
C语言,Java、C++、C#等在定义变量时也必须指明数据类型,这样的编程语言称为强类型语言。而PHP、JavaScript等在定义变量时不必指明数据类型,编译系统会自动推演,这样的编程语言称为弱类型语言。
4.printf输出
%d称为格式控制符,它指明了以何种形式输出数据。格式控制符均以%开头,后跟其他字符。%d 表示以十进制形式输出一个整数。除了 %d,printf 支持更多的格式控制,例如:
%c:输出一个字符。c 是 character 的简写。
%s:输出一个字符串。s 是 string 的简写。
%f:输出一个小数。f 是 float 的简写。(小数本身的存储机制特别,这种机制导致很多小数不能被精确地表示)
%hd用来输出 short int 类型,;
%ld用来输出 long int 类型,ld 是 long decimal 的简写;
\n换行。
5.int 一般占用 4 个字节(Byte)的内存,共计 32 位(Bit)。如果不考虑正负数,当所有的位都为 1 时它的值最大,为 232-1 = 4,294,967,295 ≈ 43亿.
short int a = 10;a只占用 2 个字节的内存,long m = 102023;占用 8 个字节的内存
实际,C语言并没有严格规定 short、int、long 的长度,只做了宽泛的限制,short 至少占用 2 个字节:2 ≤ short ≤ int ≤ long,意味short 并不一定真的”短“,long 也并不一定真的”长“,它们有可能和 int 占用相同的字节数
我们使用较多的PC系统为 Win XP、Win 7、Win 8、Win 10、Mac OS、Linux,在这些系统中,short 和 int 的长度都是固定的,分别为 2 和 4。long 的长度在 Win64 (length4)和类 Unix 系统(length8).
6.某个数据类型的长度可以使用 sizeof 操作符
7.C语言并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字,但部分编译器支持二进制数字的表示,但是却不能使用 printf 函数输出二进制。
二进制使用时必须以0b或0B(不区分大小写)开头:int a = 0b101; //换算成十进制为 5
八进制由 0~7 八个数字组成,使用时必须以0开头:int a = 015; //换算成十进制为 13 ,输出short(%ho)int(%o)long(%lo)
十进制输出short(%hd)int(%d)long(%ld)
十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X:int a = 0X2A; //换算成十进制为 42, 输出short(%hx 或者 %hX) int (%x 或者 %X) long(%lx 或者 %lX)
8.正负数
C语言规定,把内存的最高位作为符号位。以 int 为例,它占用 32 位的内存,0~30 位表示数值,31 位表示正负号,用 0 表示正数,用 1 表示负数
不希望设置符号位,可以在数据类型前面加上 unsigned 关键字,unsigned short a = 12;
9.无符号数的输出