浅谈C语言的操作符和表达式

C语言操作符和表达式:
         每一个程序都需要进行运算,对数据进行加工和处理,然而数据的运算是通过表达式进行的,操作符则是构成表达式的重要组成部分。下面先来说说C语言的操作符。

一、操作符:C语言的操作符主要分为算数操作符、位移操作符、位操作符、赋值操作符、关系操作符、逻辑运算符、条件操作符等等。

       1、算数操作符:+  -  * /  %  ++  --  

         首先+  - *  / ,进行加减乘除运算,想必大家都不陌生。但是需要注意的是,除法运算符(/)中,被除数和除数只要有浮点数,就进行浮点数除法;两个整数相除的结果为整数(比如10/3=3,舍去了小数部分。);如果除数和被除数中有一个负数的话,舍入的方向是不固定的,与编译系统有关(比如在vc++、vs中:-10/3=-3)。

         %:取模运算符类似于以前数学当中的取余运算。例如:10%3=1。这里需要注意的是取模运算符要求两个操作数必须是整数。

         ++、--:自加,自减。例如:a++(--)就是a+(-)1。还有这里有一个特别的地方,就是++在变量的左侧和右侧(a++或++a)。看下面的这段程序:

神奇吗?哈哈!!反正我是觉得挺神奇的。。。都是对a自增,为啥结果不一样呢?原来a++是让a原值先参加表达式的运算,运算完之后再对a进行自增,而++a则相反,先对a进行自增,再用新值参加表达式的运算。

        

        2、移位操作符:<<(左移操作符)                   >>(右移操作符)

           <<:左移操作的规则是将左操作数将左操作数的高位左移后溢出并舍弃,空出的右边低位补零。>>:右移操作的规则是将左操作数的低位右移后被舍弃,对于无符号数补零,对于有符号数,正数时空出的左边高位补零,负数时补入其符号位的值。右移1位操作相当于该数除以2。下来我们来看一段有趣的程序:

这段程序的目的是求十进制数10的二进制数中1的个数。

        3、位操作符:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)

           位运算对整型数据内部的二进制位进行按位操作。

           &的规则是:1&1=1,      1&0=0,     0&0=0;

           |的规则是:操作数只要有1就为1,没1就是0;

          ^的规则是:相同为0,不同为1;

          ~的规则是:按位求反,即1变成0,0变成1。

          下面来一起看一个程序:

这个程序分别求出了a和b按位与、按位或和按位异或的结果。

        4、赋值操作符:=、+=、-=、*=、/=、%=、>>=、<<=、&=、|=

           =:作用是将其右边的表达式值计算并存入左边的变量中。

           复合赋值操作符是一种简写方式,下面来举一个例子来说

如上程序中,a+=10是对a=a+10的简写形式。其他几个复合赋值操作符与之类似,这里不多说啦。

        5、关系操作符:<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、!=(不等于)。

            它的作用主要是判断两个数的大小关系,需要注意的是其组成关系表达式结果不是1就是0,故它们的值可以作为算数值处理(如下列程序)。

因为10>1成立为真,故a>1的值为1,所以输出为1.

        6、逻辑操作符:&&(逻辑与)、||(逻辑或)、!(逻辑反)

        需要注意的是:&&和||是一种短路运算。所谓短路运算是指在运算的过程中只要表达式的值确定,便不再计算下去。例如:0&&4&&8,其中0已经为假,不必再运算下去,表达式的值直接为0。

        7、条件操作符

        它实际上是一种比较运算,这种运算将两个以上的操作数运算后的逻辑值进行比较,根据其结果的逻辑值进行判断并决定执行的顺序。一般形式如下:

        表达式1? 表达式2:表达式3;其中表达式1必须为逻辑表达式,如果表达式1的值为真,则计算表达式2的值,并将它的值作为整个表达式的值;如果表达式1的值为假,则计算表达式3的值,并把它作为整个表达式的值。例如:

         a>b?a:b;  如果a>b成立,a为表达式的值,否则b为表达式的值。

        8、逗号操作符:又称顺序求值运算符,逗号操作符只能用于逗号表达式中。

         一般形式如下:

         表达式1,表达式2,……,表达式n

         逗号表达式从左向右依次执行。整个表达式的值取决于最后一个表达式的结果。

         例如:x =(a=3,6*3);表达式的值取决于逗号表达式的最后一个,所以x==18。

 

二、表达式:表达式是描述运算过程并且复合c语言规则的式子,用以描述对数据的基本操作,是程序设计中描述算法的基础。表达式由运算符和操作数组成。C语言的表达式种类很多,一般根据运算特征将表达式分为算数表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式、逗号表达式等等。这些表达式在上面介绍操作符的时候都有涉及到,所以这里不再说明。。。

猜你喜欢

转载自blog.csdn.net/weixin_41890097/article/details/79863788