您的位置:首页 > 编程语言 > C语言/C++

c语言操作符和表达式

2017-11-03 12:15 274 查看
一. 操作符
分类:
算术操作符
移位操作符
位操作符
赋值操作符
单目操作符
关系操作符
逻辑操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员
二.算术操作符
+ - * / %
1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。
2.对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就
是浮点数除法。
3.%操作符的两个操作数必须为整数。返回的是整除之后的余数。
三.移位操作符移位操作只是简单的把一个值的位向左或向右移动1.<<(左移操作符)在左移位中,值最左边的值被丢弃,右边多出来的几个空位则由0补齐,左移操作符不存在逻辑移位和算术移位。2.>>(右移操作符)右移操作符在从左边移入新位时,有两种移位方法,分别为逻辑移位和算术移位,前者左边移入的位用0填充,后者左边移入的位用该值的符号位填充,符号位为1则移入的位均为1,符号位为0则移入的位均为0,这样可以保证原数的正负形式不变。警告:1.如果一个程序使用了有符号数的右移位操作,则它是不可移植的。    2.类似a<<-2这样的移位形式,它们的效果不可预测,应当尽量避免使用这种移位操作,这类移位操作不可移植。
四.位操作符位操作符有&(按位与),|(按位或),^(按位异或),它们分别执行AND,OR,XOR操作,它们的操作数为整数类型,每次对左右操作数的各一位进行操作。1.&,如果两个位都是1,结果为1,其余情况结果为0.2.|,如果两个位中有一个位为1,则结果为1.3.^,两个位不同结果为1,两个位相同,结果为0.五.赋值操作符1.只要是允许出现表达式的地方都可以进行赋值。这个比较简单,唯一需要注意的是:a=x=y+3;在这个语句中,a和x并不一定被赋予相同的值,如果x是一个字符变量,那么y+3的值就会被截去一部分,a所得到的值就是截断后的值。2.复合赋值符+=  -=  *=  /=  %=  <<=  >>=  &=  ^=  |=a+=b;等价于a=a+b;其余操作符也类似,像这种复合赋值符可以使程序更加的紧凑,而且左操作数只需要求取一次即可,更易于阅读和书写。六.单目操作符!  ++  ~  &  sizeof  -  --  +  *  (类型) 1.  -(取负),产生操作数的负值     !(非),对操作数执行逻辑反操作     ~(反) ,对整型类型的操作数进行求补操作
     &操作符产生它的操作数的地址。     *操作符是间接访问操作符,它与指针一起使用,用于访问指针所指向的值。     +操作符产生操作数的值,什么也不干,只是为了与-操作符构成一对。     (类型)用于强制类型转换。     sizeof操作符判断操作数的类型长度,以字节为单位,操作数既可以是单个变量,也可以是一个表达式。sizeof内部的表达式不参与运算。2.    前++,前--; 
    操作数发生改变,表达式为左值,运算以后的值;就是操作数的引用; 
   后++,后-- 
    操作数变,表达式的值是右值,运算前的值; 
七.关系操作符>  >=  <  <=  !=  ==这几个操作符比较简单,!=用来测试不相等,==用来测试相等。注意==和=的操作。八.逻辑操作符&& ||1.a&&b,只有当a和b同时为真则表达式的值为真,如果a表达式为假,则不再进行b表达式的求值,整个表达式的值为假。2.a||b,只要a和b有一个为真则表达式的值为真,如果a表达式为真,则不需要对b进行求值。整个表达式的值为真。九.条件操作符exp1?exp2:exp3首先计算表达式1,如果为真,则执行表达式2,否则执行表达式3.十.逗号操作符exp1,exp2,exp3……expn逗号表达式将两个或多个表达式分隔开来,自左向右逐个求值,整个逗号表达式的值为最后一个表达式的值。十一.下标引用,函数调用和结构成员1.[]
操作数:一个数组名+一个索引值
int arr[10];//创建数组
arr [9]=10;//实用下标引用操作符。
[]的两个操作数是arr和9。
2.()
函数调用操作符
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数
的参数。
3.访问一个结构的成员
.结构体.成员名
->结构体指针->成员名
.和->操作符用于访问一个结构的成员,如果s是结构变量,那么s.a就访问s中名叫a的成员。当你拥有一个指向结构的指针而不是结构本身,想要访问他的成员时,就需要使用->操作符而不是.操作符。以下操作符的优先级及求值顺序来自(C和指针)




ab17
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: