第3章:运算与表达式
程序是由各种运算组成的过程,运算是计算机的核心工作。又回归到简单的数学问题,让我们一起学习c语言在计算机里面运算的表达。
运算符:
1算术运算符
算术运算符 | 解释 | 例子 |
+ | 加 | c = a+b; |
- | 减 | c = a-b; |
* | 乘 | c = a*b; |
/ | 除法(取整数) | c = a/b; |
% | 取余数(除法) | c = a%b; |
++ | 自增1 | c++;先赋值,后自增1; ++c;先自增1,后赋值. |
-- | 自减1 | c++;先赋值,后自减1; ++c;先自减1,后赋值. |
2关系运算符:返回的是true、false,用于条件判断
关系运算符 | 解释 | 例子:a=3;b=4; |
> | 大于 | a>b =>false |
< | 小于 | a<b =>true |
== | 等于 | a == b =>false |
>= | 大于等于 | a >= b =>false |
<= | 小于等于 | a <= b =>true |
!= | 不等于 | a != b =>true |
3逻辑运算符:返回的是true、false,用于条件判断,大于0为true,否则为false
逻辑运算符 | 解释 | 例子:a=-2;b=4 |
&& | 与(并且,都要符合条件) | a&&b =>false |
|| | 或 | a||b =>true |
! | 非 | !a =>true |
深入探讨:1.在做与运算的时候,如果a已经确定是a<0,或者是false,则表达式不用检测b,直接为false,否则a>0,则表达式由b的值决定;2.在做或运算的时候,如果a<0,则看b的值,表达式由b决定,如果a>0,则不检测b,表达式为true。 |
4位操作运算符(二进制操作)
位操作运算符 | 解释 | 例子:a=0x55;b=0xf0; |
& | 按位相与 | c=a&b; //c:01010101&11110000=01010000 |
| | 按位相或 | c=a|b; //c:01010101|11110000=11110101 |
~ | 位非(相反) | c=~b;//c=0x0f=00001111 |
^ | 按位异或(相反为1) | c=a^b;// c:01010101^11110000=10100101 |
<< | 向左位移 | c=a<<2;//c=01010100 |
>> | 向右位移 | c=a>>2;//c=00010101 |
5赋值运算符
赋值运算符 | 解释 | 例子 |
= | 从右向左赋值 | a=3 |
+= | 相加赋值 | a+=3 相当于 a=a+3 |
-= | 相减赋值 | a-=3 相当于 a=a-3 |
*= | 相乘赋值 | a*=3 相当于 a=a*3 |
/= | 相除赋值 | a/=3 相当于 a=a/3 |
%= | 取余赋值 | a%=3 相当于 a=a%3 |
&= | 相与赋值 | a&=3 相当于 a=a&3 |
|= | 相或赋值 | a|=3 相当于 a=a|3 |
6条件运算符
条件运算符 | 解释 | 例子 |
c=(a>b)?a:b | ?号的前面是表达式,?号的后面属于取值,如果a>b,则取冒号前面值,相当于c=a,否则取值为c=b。 | a = 6; b = 7; sum = (a>b)?a:b; 结果:sum=7 |
7指针运算符
指针运算符 | 解释 | 例子: a = 3; *p=&a |
* | 取值 | *p=3 相当于a=3 |
& | 取地址 | &a、P都是存储a的地址 |
8求字节数运算符
求字节数运算符 | 解释 | 例子 |
sizeof(参数) | 求取字节数,开辟相对空间 | sizeof(int);//开辟int大小的空间; |
9特殊运算符
特殊运算符 | 解释 | 例子 |
() | 括号:运算优先级和运算整体的表示 | d =a * (b+c);先算加法,再算乘法 |
[] | 下标:一般用于数组 | int a[2]={3,6};//a[0]=3,a[1]=6; |
-> | 箭头:用于指针调用集合,一般用于结构体等集合类型 | c = p->name; (请看第二章例程) |
. | 点:用于指针调用集合,一般用于结构体等集合类型 | c =p.name; (请看第二章例程) |
注意:
1“=”赋值运算,从右向左;
2没有特殊条件情况下,表达式运算从左向右。
3变量要先定义,后使用,而且在C语言里面,必须定义的变量都在表达式之前,如果再表达式中定义则报错(高级语言C++、java…修改了这个缺点)
这一章先到这里,下一张开始程序结构,记得下载例程看看哦,O(∩_∩)O…
转载于:https://blog.51cto.com/dragonyeah/1281313