C/C++教程

C语言程序设计————运算符及表达式

本文主要是介绍C语言程序设计————运算符及表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

前言:

当我们学习完了标识符,常量和变量以后,这一章再学习完运算符及表达式,就基本把C语言中的“单词”这块完成了。

运算符分类:

算术运算符(+、-、*、/、%、++、--)

赋值运算符(=、复合赋值运算符)

关系运算符(>、<、==、>=、<=、!=)

逻辑运算符(!、&&、||)

条件运算符(? :)

逗号运算符(,)

移位运算符(<<、>>)

位运算符(~、|、^、&)

指针运算符(*,&)

求字节运算符(sizeof)

强制类型转换运算符((类型))

分量运算符(.、->)

下标运算符(【】)

其他

1,按照运算符在表达式中与链接运算对象的个数可分为:

(1)单目运算符

(2)双目运算符

(3)三目运算符

(4)其他

2,运算符的优先级:

优先级指一个表达式中不同运算符进行操作的先后顺序。通常所以单目运算符的优先级高于双目运算符

3,运算符的结合性:

结合性是指表达式中各种运算符优先级相同时,由运算符的结合性来确定表达式的运算顺序。

第一类:右结合性(运算符的结合性从右向左)单目,三目和赋值运算符

第二类:左结合性(运算符的结合性从左向右)以上都是

算术运算符

    运算符号    操作数数目   名称    运算规则  举例
          +          单目    正      取原值   +5
          -          单目    负      取负值    -5
          +          双目    加        加法  a+b
          -          双目    减        减法  a-b
          *          双目    乘        乘法  a*b
          /          双目    除        除法  a/b
         %          双目    模      求余数 5%7
        ++          单目  自增       自增1  a++
         --          单目  自减       自减1  a--

1,基本运算符算数时注意:

(1)除法运算:两个操作数都是整数时,结果为整数,小数部分省去;如果都是实数,则结果为实数

(2)取余运算:两个操作数必须为整数,其结果也为整数

2,自增、自减运算符:自增(++)和自减(--)运算是单日运算,其作用是使变量的值增1或减1,其优先致高于所有的双目运算。自增和自减运算的应用形式有两种

(1)前缀形式:运算符在变量前面,表示对变量先自动加1或自动减1,然后再参与其他运算,即先改变变量的值后使用,如++k和--k。

(2)后缀形式:运算符在变量后面,表示变量先参与其他运算,再对变量先自动加1或自动减1,即先使用后改变,如k++和k--。

 赋值运算符

 赋值运算符用“=”表示,它的作用是将一个数据赋给一个变量。例如:a=3的作用是把常量3赋给变量a。也可以将一个表达式赋给一个变量,例如a=x%b的作用是将表达式x%b的值赋给变量a。

赋值运算符用“=”是一个双目运算符,其结合性是从右向左。

符合的赋值运算符

定义:赋值运算符“=”和5种算术运算符(+、-、*、/、%)和5种位运算符(<、>、&、^、|)构成10种复合的赋值运算符。分别为:+=、-=、*=、/=、&=、<=、>=、&=、^=、|=。

例如:a+=3           等价于        a=a+3

           a*=a+3       等价于       a=a*(a+3)

 关系运算符

运算符作用
>

大于

<小于

>=

大于等于
<=小于等于
==等于
!=不等于

1、关系运算符都是双目运算符,结合方向是自左向右。其中(>、<、<=、>=)优先关系相同,(==、!=)优先关系相同。

2,用关系运算符将两个任意类型的表达式连接起来的式子,称为关系表达式。它的结果是逻辑值0或1

(1)当两个运算对象之间满足给定的关系时,则表达式取真值1,否则,取假值0。
         例如:

         int a=12,b=14;     则表达式a<b的运算结果为真值1, a==b的结果为假值0。

(2)两个运算对象可以是算术表达式。如果是字符数据时,按其ASCI码值进行比较。

         例如: 'a'>‘b’的运算结果为假值0。

(3)关系表达式的值可以作为整数值参与运算。

         例如

         int = 10, b = 9, c=1,f;         

         f=a>b>c;           则f=0

         其中,关系运算符>的优先级高于赋值运算符=,而关系运算符是自左至右的结合方向,
        所以先执行a>b,结果为1,再执行1>c,结果为0,最后将0值赋给f。

 逻辑运算符

语言中的逻辑运算符是对两个关系表达式或者逻辑值进行比较的。

逻辑运算符共有三种:逻辑与&&、逻辑或||和逻辑非!

其中逻辑与和逻辑或是双目运算符,结合方向是自左至右,且逻辑与&&的优先级高于逻辑或||。逻辑非!是单目运算符,结合方向是自右自左。由于单目运算符的优先级高于双且运算符,所以它的优先级高于逻辑与和逻辑或。

aba&&ba||b!a

 条件运算符

条件运算符由“?”和“:”组成,它的一般格式为

   表达式1?表达式2:表达式3

其解释为:首先计算表达式1,如果表达式1的值为真,则求解表达式2,以表达式2的值作为整个条件表达式的值;如果表达式1的值为假,则求解表达式3,以表达式3的值作为整个条件表达式的值。

它是C语言中唯一一个三目运算符,它的结合方向为自右向左。

例如:int  x=1,y=2,z;

          z=x>y?++x:y++;

运行结果为:x=1,y=3,z=2

 逗号运算符

“,”是C语言的一种特殊的运算符,称为逗号运算符。用逗号将多个表达式连接起来的式子称为逗号表达式。

逗号表达式的一般形式:表达式1,表达式2,···, 表达式n

逗号表达式的求解过程:从左至右地计算各个表达式的值,先求解表达式1,再求解表达式2 最后求解表达式n,整个逗号表达式的值为表达式n的值。

例如:求逗号表达式"a=5,a*=a,a+5"的值。

先求赋值表达式a=5的值,表达式的值为5, a的值为5;接着求复合赋值运算a*=a的值,表达式的值为25, a的值为25,最后求算术表达式a+5的值,表达式的值为30, a的值为25。因此,整个逗号表达式的值为30。

 移位运算符

移位运算符分为两类:左移运算符(<<)和右移运算符(>>)

左移运算符:

将一个二进制数按指定移动的位数向右移动。

移位规则:左边抛弃,右边补0

右移运算符:

将一个二进制数按指定移动的位数向右移动。

移位规则:最高位是0,左边补齐0;最高为是1,左边补齐1。

注:内存中存放的数据是二进制的补码

       原码:根据数值直接写出的二进制码

       反码:原码的符号位不变,其他位取反

       补码:反码+1

       (正整数的原码,反码和补码相同,)

举例:int num+10;

           num>>1;

           num<<1;

 位运算符

&    按位与

|     按位或

^    按位异或

注:对它们的二进制数进行操作,他们的操作数必须是整数。

举例:int num1 = 1;

           int num2 = 2;

          num1 & num2; num1 | num2; num1 ^ num2; 

 求字节运算符

sizeof是求变量(类型)所占空间的大小。很简单,直接通过举例即可理解

例:int a = -10;

       printf("%d\n", sizeof(a)); 

    其结果为4,因为int类型在空间中占4个字节

这篇关于C语言程序设计————运算符及表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!