一、常量和变量
1. 常量
常量,就是在程序总不能改变它的值的量。按照类型划分有:整型常量、实型常量、字符型常量、字符串常量和枚举常量。
2. 变量
变量与常量相对,它的值在程序执行过程中是可以改变的,变量就是内存中的一段储存区域。
short a; //定义变量a,a的值不确定
a = 2; //执行后,a的值是2
a = 3; //执行后,a的值是3
变量类型 | 类型表示 |
---|---|
字符型 | char |
短整型 | short |
整型 | int |
长整型 | long |
无符号短整型 | unsigned short |
无符号整型 | unsigned int |
无符号长整形 | unsigned long |
浮点型 | float |
双精度型 | double |
除了上面给出的类型,C语言中还有一种指针类型的变量,用来储存某种实体的地址(实体包括变量、数组和函数等),储存地址的变量称为指针变量。
3. 变量的定义
变量必须先定义才能使用。
3.1 普通变量
int a; //定义一个变量
float x,y,z; //定义多个变量
3.2 指针变量
char *p; //定义一个指针变量p,用来存char型变量的地址
int *p1,*p2; //定义两个指针变量,用来存int型变量的地址
float x,*p3,y,*p4; //定义了两个普通变量x,y和两个指针变量p3,p4
4. 变量的属性
每个变量都有值和地址两个属性。
值:变量在内存中所存的内容;地址:变量在内存中所处的位置的起始地址。
每当在内存中给一个变量分配了空间,系统都会把变量名和它的地址、类型等信息记录下来,以便将来找到它、存取它。用取值运算符就可以获取变量的地址。
#include<stdio.h>
int main()
{
int a = 5;
printf("%d, %p\n",a,&a); //%p表示用十六进制输出地址
return 0;
}
二、符号常量和const变量
1. 符号常量
为方便编程,增加程序的可读性,程序中经常需要定义符号变量。
#define PI 3.141593
在计算圆的面积中,你可以写成s=3,141593*r*r,也可以写成s=PI*r*r,好处是当需要多次使用pi的值的时候,就不用再默念一遍3.141593,还方便检查代码。
①这是一条编译预处理命令,成为宏定义
②这是命令不是语句,所以不需要分号
③符号常量名一般用大写字母
2. const变量
const变量的定义要用const开头,后面部分与变量的定义类似,只不过要初始化。
与符号常量(宏常量)相比,const常量的优点是它有数据类型,编译器能对其进行类型检查。
const int n=60,m=50;
const float x=3.14;
三、运算符与表达式
1. 算术运算符和表达式
运算符 | 含义 | 运算实例 | 运算结果 | 优先级 |
---|---|---|---|---|
- | 取相反数 | -(-1) | 1 | 最高 |
* | 乘法 | 12*5 | 60 | 较低 |
/ | 除法 | 11/5 | 2 | 较低 |
% | 求余 | 11%5 | 1 | 较低 |
+ | 加法 | 5+1 | 6 | 最低 |
- | 减法 | 5-1 | 4 | 最低 |
2. 复合的赋值运算符
复合赋值运算符 | 例子 | 运算过程 |
---|---|---|
+= | n+=m+1 | n=n+(m+1) |
-= | n-=m+1 | n=n-(m+1) |
*= | n*=m+1 | n=n*(m+1) |
/= | n/=m+1 | n=n/(m+1) |
%= | n%=m+1 | n=n%(m+1) |
3. 增1和减1运算符
语句 | 等价的语句 | 执行语句后M的值 | 执行语句后N的值 |
---|---|---|---|
m = n++; | m = n; n = n+1; | 3 | 4 |
m = n--; | m = n; n = n-1; | 3 | 2 |
m = ++n; | n = n+1; m = n; | 4 | 4 |
m = --n; | m = n-1; m = n; | 2 | 2 |
4. 强制类型转换
#include<stdio.h>
int main()
{
int m=5;
printf("m/2 = %d\n", m/2);
printf("(float)m/2 = %f\n", (float)m/2);
printf("(float)(m/2) = %f\n", (float)(m/2));
return 0;
}
//运行结果:
//m/2 = 2
//(float)m/2 = 2.500000
//(float)(m/2) = 2.000000