常量与变量
其值不能被改变
的量称为常量,值能改变的量称为变量。
常量
常量又被分为整型常量
、实型常量
、字符常量
。
整型就是整数那样的,正、负、零都算。实型应该就是实数吧,但例子为4.6
、-1.23
,是浮点型?字符常量的样式为'a'
、'd'
这样的,还是后面看看有没有解释吧。
常量一般从其字面形式即可判别。这种常量称为
字面常量
或直接常量
。
其在代码中的使用为:
#define PRICE 30
//用`#define`定义了PRICE一直为30
//此后凡在本程序中出现的PRICE都代表30
//这应该与Java的final修饰差不多
#include <stdio.h>
void main()
{
...
}
另外还发现,#define与# define没有区别,但自我觉得# define的写法还是要易于阅读和修改些。
变量
变量代表内存中具有特定属性的一个
存储单元
,它用来存放数据,也就是变量的值,在程序运行期间,这些值是可以改变的。
如果是在以往,要我说变量是个啥,我的回答会是变量就是可以变的量
。知其然不知其所以然嘛,这样的事还有好多。
标识符的构成
标识符就是变量的名称。C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线
。所以像.
、#
、%
、&
等等就不能在变量名中出现,这些是不合法
的标识符。
大小写字母为不同字符。一般,变量名用小写字母表示,这样可读性更高。
标识符的长度
我的理解是标识符应该尽量短小精悍
,还要做到“见名知意”
。例如student不妨简写成stud,number不妨简写成num。
虽然ANSI C标准没有规定标识符的长度,但各C编译系统都有自己的规定
。书上这样说,不过这是版次为2005年的书。
定义
C语言中,要求对所有用到的变量作强制定义
,也就是“先定义,后使用”
,在Java也是一样。这就能保证程序中变量名使用得正确
。例如定义了char string
,后面却错写成stirng
,就会报错。
细分
有些数据类型可以进行运算:其中整型
比较常见,另外浮点型
应该也行。
这里接触到了一个之前从来没有用过的运算符%
,%
是用来求a/b
的整余数的。
如果将a、b指定为实型变量,则不允许“求余”运算,在编译时会给出有关“出错信息”。
整型常量
即整常数。分为:
1.十进制整数
2.八进制整数
以0
开头的数是八进制数。如0123
表示八进制数(123)<8的下标怎么表示>。
3.十六进制整数
以0x
开头的数是十六进制。这样的数在颜色那块比较常见。
据颜色代码看,十六,就是0.1.2.3.4.5.6.7.8.9.a.b.c.d.e.f
,对大小写不敏感。
整型数据在内存中的存放形式
数据在内存中是以二进制形式存放的。其中还有关于分配字节数的内容,这里不是很明白。
实际上,树值是以
补码
(complement
)表示的。一个正整数的补码和该数的原码(即该数的二进制形式)相同。如果数值是负
,求负数补码的方法是:将该数的绝对值
的二进制形式
,按位取反再加1
。
有个例子:求-10的补码的方法是:
① 取-10的绝对值10;
② 10的绝对值的二进制形式为1010;
③ 对1010取反
得1111111111110101
(一个整数占16位);
④ 再加1得1111111111110110
。
到这里貌似有点明白了。