第二课

一、变量

1.变量定义

1
int a = 0

定义了一个变量,名字是a,类型是int,初始值是0

变量是一个保存数据的地方,当我们需要在程序里保存数据时,就需要一个变量来保存它。用一个变量保存了数据,它才能参加到后面的计算中。

a=0是一个式子,这里的“=”是一个赋值运算符,表示将“=”右边的赋值给左边的变量。

所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。

C99可以在程序的任何地方定义变量,只要出现在这个变量第一次出现之前,ANSI C只能在代码开头的地方定义变量

2.变量形式

变量的一般形式:<变量名称><变量名称>

3.变量的名字

①变量需要一个名字,变量的名字是一种“标识符”,意思是它是用来识别这个和那个的不同的名字。

②标识符的原则:标识符只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,C语言的关键字(保留字)不可以用做标识符。

※C语言的关键字(不用记,但要知道):auto,break,case,char,const,continue,default,do,double,else,enum,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatlie,while,inline,restrict

4.赋值

在程序设计中,a=b表示要求计算机做一个动作:将b的值赋给a。关系是静态的,而动作是动态的。a=b和b=a的意思完全不同

5.初始化

当赋值发生在定义变量的时候,把变量赋为默认值,就是变量的初始化。。虽然并没有强制要求所有的变量都在定义的地方做初始化,但是所有的变量在第一次被使用(出现在赋值运算符的右边)之前应该被赋值一次

6.初始化形式

①初始化形式:<类型名称><变量名称>=<初始值>;

int a = 1

int b = 1

②组合变量定义的时候,也可以在这个定义中单独给单个变量赋初始值:

int a = 1,b = 1

7.读整数

1
scanf("%d",&a)

要求scnaf这个函数读入下一个整数,读到的结果赋值给变量a

※注意&

8.常量

固定不变的数,是常数。直接写在程序里称作直接量

const是一个修饰符,加在int前面,用来给这个变量加上一个const(不变的)的属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了。

※对常量做修改,把它放在赋值运算符的左边,会报错

9.浮点数

带小数点的数值是浮点数

①当浮点数和整数放到一起运算时,会将整数转换成浮点数,然后进行浮点数的运算

②inch是定义为int类型的变量,把int换成double,就可以改为double类型的浮点数

double表示浮点数类型。float表示单精度浮点数。

输入使用%lf,输出使用%f

10.数据类型

①整数

1
2
3
int
printf("%d",...)
scanf("%d",...)

②带小数的数

1
2
3
double
printf("%f",...)
scanf("%lf",...)

二、表达式

1.运算符

运算符是指进行运算的动作

2.算子

算子是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值

3.复合赋值

①5个算数运算符,“+”,”-“,”*“,”/“,”%“,可以和赋值运算符“=”结合起来,形成复合赋值运算符:”+=“,”-=“,”*=“,”/=“和”%=“

※两个运算符中间不要有空格

a += b+c等同于a = a+(b+c)

a *= b+c等同于a = a*(b+c)

②“++”,“–”是两个很特殊的运算符,它们是单目运算符,这个算子必须是变量。这两个运算符分别叫递增运算符和递减运算符,作用是给这个变量+1或-1

a++等同于a += 1等同于a = a+1

++和–可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式

a++/a–的值是a+/-1以前的值,++a/–a的值是+/-1以后的值,无论哪一个,a自己的值都+/-1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

int main()
{
int a;
a = 1;

printf("a++=%d\n", a++);
printf("a=%d\n", a);

printf("++a=%d\n", ++a);
printf("a=%d\n", a);

return 0;
}

运行结果:

a++=1

a=2

++a=2

a=2

表达式 运算 表达式的值
a++ 给a加1 a原来的值
++a 给a加1 a+1以后的值
a– 给a减1 a原来的值
–a 给a减1 a-1以后的值

3.交换两个变量

程序表达的是顺序执行的动作,而不是关系

1
2
a=b;
b=a;

是依次执行的,结果使得a和b都得到b原来的值

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>

int main()
{
int a=1;
int b=2;
int t;
t=a;
a=b;
b=t;
printf("a=%d,b=%d\n", a,b);
return 0;
}

4.求平均值

两个整数的平均值

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>

int main()
{
int a,b;
scanf("%d %d", &a, &b);
double c = (a+b)/2.0;
printf("%d和%d的平均值=%f\n", a, b, c);

return 0;
}

5.赋值运算符

赋值也是运算,也有结果

a=1的结果是a被赋予的值,也就是1

a=b=1等同于a=(b=1) (自右向左)

嵌套式赋值

1
2
3
int a = 1;
int b;
int c = 1+(b=a);

※不利于阅读,容易产生错误(不要这样)