第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关系运算符:返回的是truefalse,用于条件判断

关系运算符

解释

例子:a=3;b=4;

>

大于

a>b          =>false

<

小于

a<b          =>true

==

等于

a == b        =>false

>=

大于等于

a >= b        =>false

<=

小于等于

a <= b        =>true

!=

不等于

a != b         =>true


3逻辑运算符:返回的是truefalse,用于条件判断,大于0true,否则为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

&

取地址

 &aP都是存储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…