7.C语言的基础运用——关于运算符
运算符基本分为算术运算符、位运算符、关系运算符和逻辑运算符 咱们一个个来讲
一、算术运算符
先贴一个例子:
#include <stdio.h>
int main(){
int a,b,c;
b=12;c=22;
a=b+c;
printf("%d",a);
return 0;
}
输出为

基础算术运算符基本和我们认知的数学中的运算符无异,加减乘除就不多说了。
%:百分号%在算式里面代表取余,例如8%5结果为3,9%3结果为0。
:在键盘数字6下面的符号表示次方,例如2^3就是2的三次方结果为8。
运算优先级和数学运算无异,唯一需要注意的是%(取余运算)的优先级比乘除要低,比加减要高。
其中a=a+1可以缩写为a++或++a,a=a-1可以缩写为a--或--a。这种缩写我们称之为自增和自减。符号在a之前和之后的区别在于,在a之前是先输出再自增,在a之后是先自增再输出。
举个简单的例子:
#include <stdio.h>
int main(){
int a,b,c;
a=10;
b=a++;
a=10;
c=++a;
printf("%d\n%d\n",b,c);
return 0;
}
输出为

先看b=a++,因为是a++,展开后应该是(b=a)=a+1,实际上分开写就是b=a;a=a+1;
再看c=++a,展开后实际上就是c=a=a+1,赋值语句的顺序是从后往前赋值的(该页笔记最后有一张优先级表,参考表中的结合方式理解一下从后往前的概念),所以这句话就等价于a=a+1;c=a;(不理解也没关系,可以先自己试试,如果实在搞不懂,其实除了学校考试,在实际应用中就让自增自减语句单独出现,不要放在输入输出或者赋值语句中就可以了。其实本来也不建议这样做,容易出问题而且看着头昏)
a*=3 表示a=a*3,同理,/=,+=,-=,都是一种简洁的写法,但一开始也不建议这样写,容易写懵
二、位运算符
>>和<<:这两个是针对二进制的移位运算符,在单片机编程中会经常用到。左箭头代表向左移位,右箭头为向右移位,当二进制向左移位的时候,最高位补0,向右移位最低位补0。例如0xFF<<2结果表现为0xF6,表现为二进制的话就是将1111 1111向左移两位变为1111 1100。
&:与运算符,将两个二进制数按位相与,有0出0,全1出1。例如1101 0111 & 1011 0011。将他们按位一一对应
1101 0111
1011 0011
——————————
1001 0011
1001 0011就是他们的输出
|:或运算符,有1出1,全0出0,同样的上面的例子1101 0111 | 1011 0011
1101 0111
1011 0011
——————————
1111 0111
1111 0111这个就是他们的输出
具体的应用将在之后单片机的应用里实际使用,先理解符号的意义。
三、关系运算符
> 大于
>= 大于等于
< 小于
<= 小于等于
!= 用于测试“不相等”
== 用于测试“相等”
= 用于赋值
注意:在编程的过程中一定要注意 == 和 = 的区别
这里引入布尔值的概念,英语boolean,布尔逻辑的意思。在C++语言中有bool类型的变量,用0表示False(逻辑假),1表示True(逻辑真)。
但在C语言中没有引入该数据类型,但是程序中使用0表示假,非0的整数(一般为1)都为真。
直接举例子:
#include <stdio.h>
int main(){
int a=10,b=1,c,d;
c=(a>b);
d=(a<b);
printf("c=%d\nd=%d\n",c,d);
return 0;
}
输出:

可以看到c是1,代表真,也就是a>b成立;d是0,代表假,也就是a<b不成立。
四、逻辑运算符
&& :逻辑与 理解为: 即 怎么 又 怎么 一假全假,全真为真
|| :逻辑或 理解为: 要么 怎么 要么 怎么 一真为真, 全假为假
!:逻辑非 真取假 假取真
与位运算符的&和|比较类似,如果把真理解为1,假理解为0,那么这个&&和||可以理解为一位二进制数的与或逻辑关系,在后面if语句的学习中我们会经常用到这个(应用程序放在条件判断语句的学习中,现在想不明白可以先放着)
关于运算符的优先级:


浙公网安备 33010602011771号