第2周:变量
C
2.1.1 变量:变量定义
如何输入
- 输入也在终端窗口中
- 输入是以行为单位进行的,行的结束标志是按下回车键。在按下回车之前,程序不会读到任何东西
变量
- int price = 0;
- 这一行定义了一个变量。变量的名字是price,类型是int,初始值是0。
- 变量是一个保存数据的地方,当我们需要在程序里保存数据时,就需要一个变量来保存它。用一个变量保存了数据,它才能参加到后面的计算中。
- 变量定义的一般形式就是:<类型名称> <变量名称>;
- int amount;
- int price,amount;
变量的名字
- 变量需要一个名字,变量的名字是一个“标识符”,意思是它是用来识别这个和那个的不同的名字。
- 标识符有标识符的构造规则。基本原则是:
- 标识符只能由字母、数字和下划线组成
- 数字不可以出现在第一个位置上
- C语言的关键字(或称保留字)不可以用做标识符。
2.1.2 变量:变量赋值与初始化
赋值和初始化
- int price = 0;
- 这一行定义了一个变量。变量的名字是price,类型是int,初始值是0。
- price=0是一个式子,这里的“=”是一个赋值运算符,表示将“=”右边的值赋给左边的变量。
- 当赋值发生在定义变量的时候,就是变量的初始化。
- 所有的变量在第一次被使用(出现在赋值运算符的右边)之前应该被赋值一次。
变量初始化
- <类型名称> <变量名称> = <初始值>;
- int price = 0;
- 组合变量定义的时候,也可以在这个定义中单独给单个变量赋初值,如:
- int price=0,amount = 100;
变量类型
- int price = 0;
- 这一行定义了一个变量。变量的名字是price,类型是int,初始值是0。
- C是一种有类型的语言,所有的变量在使用之前必须有定义或声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。
2.1.3 变量:变量输入
读整数
- scanf("%d", &price);
- 要求scanf这个函数读入下一个整数,读到的结果赋值给变量price
- scanf("%d %d", &a, &b);输入两个整数。
2.1.4 变量:变量VS常量
const
- int change = 100 -price;
- 固定不变的数,是常数。直接写在程序里,称作是直接量(literal)。
- 更好的方式,是定义一个常量:const int AMOUNT = 100;
- const是一个修饰符,加在int的前面,用来给这个变量加上一个const(不变的)属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了。
- 常量用大写字母。
2.1.5 变量:浮点数
浮点数
- 带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式。另一种方式叫做定点数,不过在C语言中不会遇到定点数。人们借用浮点数这个词来表达所有的带小数点的数。
- 当浮点数和整数放在一起运算时,C会将整数转换成浮点数,然后进行浮点数的运算。
double
- double类型是双精度浮点数,float表示单精度浮点数。
- printf("%.2f\n", sum); 精确到小数点后两位。
数据类型
- 整数
- int
- printf("%d",...)
- scanf("%d",...)
- 带小数点的数
- double
- printf("%f",...)
- scanf("%lf",...)
2.2.1 表达式:表达式
表达式
- 一个表达式是一系列运算符和算子的组合,用来计算一个值
运算符
- 运算符(operator)是指进行运算的动作,比如加法运算符“+”。
- 算子(operand)是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值。
2.2.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*+b意思是:a*(b)
- a*-b意思是:a*(-b)
赋值运算符
- 赋值也是运算,也有结果
- a=6的结果是a被赋予的值,也就是6
- a=b=6-->a=(b=6)
2.2.3 表达式:复合赋值和递增递减
复合赋值
- 5个运算符,+-/*%,可以和赋值运算符“=”结合起来,形成复合赋值运算符:“+=”、“-=”、“/=”、“ *= ”、“%=”
- 注意两个运算符中间不要有空格
- a/=b意思是:a=a/b
- a-=b意思是a=a-b
- a+=b意思是:a=a+b
- a*=b意思是:a=a*b
前缀后缀
- ++和--可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式。
- a++的值是a加1以前的值,而++a的值是加了1以后的值,无论哪个,a自己的值都加1了。
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
printf("输入a=%d\n", a);
printf("a++=%d\n", a++);
printf("a=%d\n", a);
printf("++a=%d\n", ++a);
printf("a=%d\n", a);
}
输入a=1
a++=1
a=2
++a=3
a=3