2.1变量
2.1.4常量VS变量
const
const int AMOUNT = 100;
- const是一个修饰符,加在int的前面,用来给这个变量加上一个const(不变的)的属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了。
int change = AMOUNT - price;
2.2数据类型
浮点数
- 当浮点数和整数一起运算时,C会将整数转换成浮点数,然后进行浮点数的运算。
整数
int
printf("%d", ...)
scanf("%d", ...)
带小数点的数
double
printf("%f", ...)
scanf("%lf", ...)
2.3表达式
2.3.1表达式
运算符
- 运算符(operator)是指进行运算的动作,比如加法运算符“+”,减法运算符“-”。
- 算子(operand)是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值。
2.3.2运算符优先级
优先级 | 运算符 | 运算 | 结合关系 | 举例 |
---|---|---|---|---|
1 | + | 单目不变 | 自右向左 | a*+b |
1 | - | 单目取负 | 自右向左 | a*-b |
2 | * | 乘 | 自左向右 | a*b |
2 | / | 除 | 自左向右 | a/b |
2 | % | 取余 | 自左向右 | a%b |
3 | + | 加 | 自左向右 | a+b |
3 | - | 减 | 自左向右 | a-b |
4 | = | 赋值 | 自右向左 | a=b |
赋值运算符
- 赋值也是运算,也有结果
- a=6的结果是a被赋予的值,也就是6
- a=b=6 —-> a=(b=6)
“嵌入式赋值”
int a=6;
int b;
int c = 1+(b=a);
- 不利于阅读
- 容易产生错误
2.3.4复合赋值和递增递减
复合赋值
- 5个算数运算符,±/%,可以和赋值运算符"="结合起来,形成复合赋值运算符:“+=”、“-=”、“=”、“/=”和“%=”
total+= 5;
tatal = total + 5;
- 注意两个运算符中间不要有空格
递增递减运算符
- “++”和“–”是两个很特殊的运算符,它们是单目运算符,这个算子还必须是变量。这两个运算符分别叫递增运算符和递减运算符,它们的作用就是给这个变量+1或者-1。
count++;
count += 1;
count = count + 1;
前缀后缀
- ++和–可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式。
- a++的值是a加1以前的值,而++a的值是加了1以后的值,无论哪个,a自己的值都加了1了。
- a++和++a的区别是a++是使用的a后,再对a进行加1。++a是先把a加1,然后再使用a。
例子
#include <stdio.h>
int main(void)
{
int a=10;
printf("a++=%d\n",a++);
printf("a=%d\n",a);
printf("++a=%d\n",++a);
printf("a=%d\n",a);
return 0;
}
运行结果
表达式 | 运算 | 表达式的值 |
---|---|---|
count++ | 给count加1 | count原来的值 |
++count | 给count加1 | count+1以后的值 |
count- - | 给count减1 | count原来的值 |
- -count | 给count减1 | count-1以后的值 |