运算符在编程中也是极其重要的,有计算,对比,赋值等作用,对于新手来说,这一篇教程不需要大家去理解,但是大家要先记住它,以后你就会明白了或需要的时候在回来查找
运算符的优先顺序说明
= 号
这个是赋值符号,顺序是由右到左,因为变量在左边,数值在右边
|| 号
由左至右 逻辑运算’or’,这个符号在程序里的意思是“或者”,a==1||b==1,这句代码的意思是,当a等于1或者b等于1时,意思是满足两个条件的其中一个
&& 号
由左至右 逻辑运算’and’,这个符号由两个&组成,在程序里的意思是“并且”,a==1&&b==1,这句代码的意思是,当a等于1并且b等于1时,意思是两个条件都要满足
| 号
由左到右,位元运算’or’,位或
^ 号
由左到右,位元运算’xor’,位异
& 号
由左到右,位元运算’and’,位与
==!=<<=>>= 几个符号
由左到右,比较运算,== 是相等,!= 是不相等,<= 是小于或等于,>=大于或等于,< 是小于号,> 是大于号
<< >> 两个符号
由左到右,移位运算,必须为整型或字符
- 两个符号
由左到右,加法,减法(字符使用时用法不同)
- 两个符号
- / % 三个符号
由左到右,乘法,除法,求余(不能用于字符串)
注:加减乘除的计算方法和我们的数学是一样的,先乘除后加减
-!++ –~*&
由左到右,-(负数),!(否),++(递加),–(递减),~(位运算的not运算,按位取反),,()(函数参数传递),&(取址运算),(只有!(否)可以用于字符串)
当优先顺序相同时,则按结合律来判定运算顺序
注意1:a==1||b==2&&c==3,这句话的意思是:当(a等于1或b等于2)并且c等于3时,先算左边的“或者”在算右边的“并且”
注意2:混合运算不能使用这些符号,(如+=,-=,*=,等)
注意3: “,”及“?:”是条件运算,程序不支持
少需常用运算符说明
一、赋值运算符
赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符号为‘=’。这里并不是等于的意思,只是赋值,等于用‘==’表示。
注意:赋值语句左边的变量在程序的其他地方必须要声明。
得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。常数只能作为右值。
例如:
b=5
a1=a2=0
第一个赋值语句大家都能理解。
第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算。这样它先a2=0;然后a1=a2;那么我们这样行不行呢?
(a1=a2)=0
这样是不可以的,因为先要算括号里面的,这时a1=a2是一个表达式,而赋值语句的左边是不允许表达式存在的。
二、算术运算符
在C语言中有两个单目和五个双目运算符。
符号 功能
- 乘法
/ 除法
% 求余
- 加法
- 减法
下面是一些赋值语句的例子, 在赋值运算符右侧的表达式中就使用了上面的算术运算符:
A=H*W
B=B1+B2/B3-B4
运算符也有个运算顺序问题,先算乘除再算加减。
求余运算符(%)用于计算两个整数相除所得的余数。例如:
a=7%4
最终a的结果是3,因为7%4的余数是3。
那么有人要问了,我要想求它们的商怎么办呢?
b=7/4
这样b就是它们的商了,应该是1。
也许有人就不明白了,7/4应该是1.75,怎么会是1呢?这里需要说明的是,当两个整数相除时,所得到的结果仍然是整数,没有小数部分。要想也得到小数部分,可以这样写7.0/4或者7/4.0,也即把其中一个数变为非整数。
三、逻辑运算符
逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。
符号 功能
&& 逻辑与
|| 逻辑或
! 逻辑非
当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行||运算时,只要有一个为真,总的值就为真,只有当所有的都为假时,总的式子才为假。逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。若原先为假,则逻辑非以后为真,若原先为真,则逻辑非以后为假。
还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。例如:
a=2
b=1
a||b-1
因为a=2,为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。
四、关系运算符
关系运算符是对两个表达式进行比较,返回一个真/假值。
符号 功能> 大于、< 小于、>= 大于等于、<= 小于等于、== 等于、!= 不等于
这些运算符大家都能明白,主要问题就是等于==和赋值=的区别了。
一些刚开始学习编程的人总是对这两个运算符弄不明白,经常在一些简单问题上出错,自己检查时还找不出来。看下面的代码:
if
(Amount=123) ……
很多新人都理解为如果Amount等于123,就怎么样。其实这行代码的意思是先赋值Amount=123,然后判断这个表达式是不是真值,因为结果为 123,是真值,那么就做后面的。如果想让当Amount等于123才运行时,应该if(Amount==123) ……