目录
1、变量
① 声明和定义
注意:良好的编程习惯:变量在创建的时候就给他一个初始值吗,不知道的话就给0。
②全局变量的局部变量
全局变量的作用区域是整个程序
局部变量的作用区域是代码块
注意:当全局变量的局部变量同名的时候,以局部变量优先
补充:全局变量和局部变量的存储位置不同
全局变量: 存储在静态存储区中。
局部变量: 存储在栈内存中。
2、算数操作符
① + -
ps:双目操作符
② * /
整除
非整除:小数点后全部舍弃,不是四舍五入
ps:类型升级
③ %
负数取模
3、赋值操作符
①=
②连续赋值
③复合赋值
4、单目操作符
①++ 自增
前置++:先加1,再使用
后置++:先使用,再+1
②--自减
前置--:先减1,再使用
后置--:先使用,再减1
题目1
题目2
③+ 正号
④- 负号
5、强制类型转换
变量,顾名思义就是变化的量,在生活中有很多变化的量,温度、年龄、分数等等。同样的在C语言中,我们也离不开变量。在C语言中,变量用于存储和表示变化的数据的标识符,每一个变量都有一个特定的数据类型,决定他们存储的数据类型,以及占用内存空间的大小。
在C语言中如果我们想要引入一个变量,来帮助我们计算,我们首先需要申明它,简单来说就是告诉编译器,某某某,它是一个变量,后面看见它。你别不认识了。然后是定义,定义就是给它分配一个内存空间来存储变量。
声明的基本格式是:数据类型+变量名,比如
int age :告诉编译器,age 是一个变量,类型是int
定义我们一般采用给变量初始化来操作,一般与声明同时进行,比如
int age=10 :这是一个定义,分配内存并将整数变量age初始化为10
全局变量在最开始(第一个大括号外面)就进行定义,作用于整个区域。
// 全局变量
int globalVar = 10;
void someFunction() {
// 在任何地方都可以访问globalVar
printf("%d\n", globalVar);
}
全局变量在代码块中进行定义,作用于代码块区域。
void someFunction() {
// 局部变量
int localVar = 5;
// 只能在someFunction中访问localVar
printf("%d\n", localVar);
}
这个程序的运行结果是10;
它们在程序的整个生命周期内都存在,从程序启动到结束。全局变量在内存中的位置是固定的,不会随着函数的调用而改变。
每次进入定义变量的代码块(通常是函数)时,系统都会为局部变量分配内存,当退出该代码块时,分配给局部变量的内存将被释放。因此,局部变量的生命周期与其所在代码块的执行周期相对应。
计算机顾名思义可以用来做计算。在数学中,我们做计算最常用的想必就是加减乘除了吧,同样的在计算机中也能进行这些运算,C语言怎么进行加减乘除运算呢,它提供了一系列的操作符。其中有一些操作符就是算术操作符,它包含
+ 加法,- 减法,* 乘法,/ 除法,% 取模(它的含义及用法后面再说)
主要用来进行加法计算
这里我们讲一下,双目运算符的概念,对于a+b,+称为操作符;a、b 称为操作数,因为加号
C语言中乘法是 * ,C语言中除是 /
如果a/b 能够整除,我们不难想到它的结果,比如6/3=2,写代码验证一下:
与我们的猜想一致,那如果是小数呢
6/4按照数学来说是1.5,但是在c语言中,如果你打印整型,则小数点后的数全部舍弃,为1
如果我们想要得到小数,该怎么办呢
在数据类型中,我们知道,小数是浮点数,那我们把c 的类型改成float,可以吗,来实验一下
错的!!!
C语言中,整型相除只能得到整型,就是把c的类型改成浮点数,也是把1变成了浮点数,正如结果中写的那样。
那我们该怎么办呢,将a或者b其中一个变成浮点数即可,看下面的代码:
至于后面这么多零,不想要怎么办,在学printf 函数的时候会详细介绍。
因此,如果我们需要得到浮点数结果时,我们只要将其中一个运算数改成浮点数即可,这种操作也被称为:类型升级——当整型和浮点型混合运算时,整数会被自动提升为浮点数,以确保保留小数部分。
取模运算符,返回整除以后得余数。取模运算只适用于整数。
比如6%4 相当于6整除4后的余数,余数是2 所以输出的是2,写代码验证一下:
如果刚好整除呢,那余数就是0,因此输出0,写代码验证一下:
负数取模,结果的正负号由第一个运算数的正负号决定。
在我们刚创建一个变量的时候,我们给它一个值叫做初始化,当我们初始化以后再给它一个值叫做赋值,赋值操作符是=
比如我们可能会见到如下的代码
怎么理解c=b=a+3;
从右往左,依次赋值,首先将a+3的值赋值给b,b变成了8,然后再把b的值赋值给c,c变成8;
所以,输入a、b、c的值应该分别为 5、8、8。
与我们想的一致。
由于连续赋值不便于理解,书写是最好不要这样写。
在我们写代码的时候,可能会进行一些自加、自减等的操作,这里我们可以写成复合赋值。
首先解释一下自加自减,当我们想要把a+3的值,重新赋值给a时,这种操作就被称为自加,反之,当我们想要把a-3的值,重新赋值给a时,这种操作就被称为减。
代码如下:
其实我们还可以这样写
a+=3,这就是复合赋值;
无论是算数操作符还是赋值操作符都是双目操作符,除了双目操作符以外还有单目操作符,顾名思义,只有一个操作数,比如:++,--,+(正),-(负)。
它的计算方法是,先将a+1,
其实我们也可以把代码转化成如下的样子,便于我们理解:
计算方法,先使用a当前的值进行计算,然后再把a+1;
其实我们也可以把代码转化成如下的样子,便于我们理解:
也可以转化,转化方式与自增类似,就不再赘述了
其实对于初学者而言搞懂他们并不容易,我们再做几个题目分析一下
我们来一步步进行分析:
编译,显示结果:
分析一下
编译,显示结果
一个数加上+ 号还是他本身,没什么影响
一个数加上- 号变成它的相反数
我们知道,在定义变量的时候,我们用的方法是 变量类型 +变量的方法,但是如果我们定义变量的时候,变量类型与变量本身不匹配呢,比如:
int a=0;
a=3.5;
我们声明变量a是整型变量,但是我们给他赋值的时候,用的是3.5,这个时候,程序会报错
但是我就是想让3.5变成整型变量怎么办呢,可以用强制类型转换
(数据类型) 数据
将数据强制转化成前面的数据类型
再试一次
此时浮点数3.5已经被转化为整型,后面的小数位被全部舍弃,并不遵循四舍五入。