今天来学习操作符的相关内容。
在c语言学习的过程中,不可避免的要涉及到计算,于是C语言为了便于运算,提供了一系列操作符(又叫运算符)。
1.算数操作符
首先来说说,算术操作符:+、-、*、/、%
+和-都是双目操作符,因为“+”和“-”运算中,操作符两边的是它们的操作数。
比如1 + 2,1 - 3
数学中怎么运算就怎么运算
*用来完成乘法,比如:
这里就是把num*num,也就是5*5
/用来完成除法
是稍微有点不同的地方是除号的两边如果是整数的话,执行的是整数除法,得到的结果也是整数。
而且C语言的整数除法是整除,只会返回整数部分,丢弃小数部分。
所以会出现如下情况:
尽管变量 x 的类型是float(浮点数),但是6/4得到的结果是1.0,而不是1.5
如果想得到浮点数的结果,那么运算数中必须有其一是浮点数,这时C语言就会进行浮点数除法。
这样就行了,输出的结果是1.500000(或者写成6/4.0也行)
运算符 % 表示求模(余)运算,即返回两个整数相除的余数值。这个运算符只能用于整数,不能用于浮点数。比如6%4的结果就是2
而负数求模结果的正负号由第一个运算数的正负号决定。
2.赋值操作符
在变量创建的时候给一个初始值叫初始化(初始值随便是什么都行),在变量创建好后,再给一个值,这叫赋值。(之前其实也有解释过..)
比如int a = 100;,创建变量时给了一个值,这就是初始化
而a=100;是赋值
接下来说一下连续赋值与复合赋值符:
(1)连续赋值
赋值操作符可以连续赋值,比如c=b=a+3
需要注意的是,连续赋值是从右向左依次赋值的。
C语言虽然支持这种连续赋值,但是写出的代码不容易理解,建议还是拆开来写,这样方便观察赋值过程。
所以应该写成b = a+3; c = b;
(2)复合赋值符
写代码时,我们经常可能对一个数进行自增、自减的操作(比如Day13中的保底机制代码构思)
而C语言中提供了更加简便的写法,也就是复合赋值符,方便编写代码。以下就是一些复合赋值符。
+= -= *= /= %=
>>= <<= &= |= ^=
暂且先简要介绍一下上面一行的复合赋值符:
首先是单目操作符:++、--、+、-(后面两个是正负号)
单目操作符的定义类比双目操作符,也就是只有一个操作数。
++是一种自增的操作符,又分为前置++与后置++,--同理,是一种自减的操作符。
前置++:先+1,后使用。比如
++a就是在a=10的基础上加1,然后再把赋值给b,也就是最后a=11,b=11
后置++:后使用,先+1。像这样:
与上面的例子相比,就仅仅从++a变为a++
但答案是a=11 b=10
因为这里就是先把a=10赋值给b,再把a加1输出。
前置--与后置--与++基本一致,前置--先-1,后使用;后置--先使用,后-1
再来说说单目运算符+和-
其实运算符 + 对正负值没有影响,是一个完全可以省略的运算符,但是写了也不会报错。
运算符 - 用来改变一个值的正负号,负数的前面加上 - 就会得到正数,正数的前面加上 - 会得到负 数。
而+=、-=、*=、/=
用这一个例子就能理解:
a=a+5,也可以写做a += 5,同理a=a-5可以写做a -= 5
*=和/=同理
最后来说一下强制类型转换:
这是操作符中一种特殊的操作符,但写起来很简单,就写作:(类型)
比如我写了一个int a = 3.14;
这明显是错的,a的是int类型, 3.14是double类型,两边的类型不一致,编译器会报错
为了消除这个警告,我们可以使用强制类型转换:
int a = (int)3.14;就没问题了。意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分
但强制类型转换都是万不得已的时候使用的,能避免尽量避免哈。
以上就是今天的学习内容啦~
(最近有往之前的博文里补充知识点,所以发文章的速度下降了,感兴趣的可以去翻一下之前的文章,补充了不少内容。)