point on C_5 操作符和表达式

来源:互联网 发布:2016年11月网络热搜 编辑:程序博客网 时间:2024/04/16 20:33

第四章操作符和表达式

 

4.1操作符(运算符)

4.1.1算术操作符

+ -   *  /  %

/的两个操作数都是整数时,执行整除运算,其他情况下执行浮点除法。

%的两个操作数必须都是整数,取余。

 

4.1.2移位操作符

<<左移操作符,不管逻辑移位还是算术移位都0

>>右移操作符,逻辑移位时0,算术移位根据原先该值的符号位来10

 

4.1.3位操作

&与  |或  ^异或  ~按位取反

 

Value&= ~(1<<number)(与清0)

Value|= 1<<number(或置1)

 

4.1.4赋值

赋值是表达式的一种,而不是某种类型的语句。所以,只要允许出现表达式的地方,都能进行赋值。表达式都具有一个值,赋值表达式的值就是左操作数的新值!

 

警告:

1.进行赋值运算时要注意操作数的变量类型:a= b + c;有可能因为类型不一样而发生截断!

 

2.

char ch;

 

while(( ch = getchar() ) != EOF)….

 

EOF需要的位数比字符型值提供的位数多,getchar()的返回值也是一个整形值,而不是字符值的原因!

在该程序中,getchar()把返回值首先存储于ch中将导致它被截短,然后再整形提升与EOF进行比较。

 

复合赋值符

+=  -= *=  /=  %= <<=  >>=  &= ^=  |= 

优势:容易书写和维护

 

4.1.5单目操作符

!  ++ -  &  sizeof

^  -- +  *  (类型)

!:逻辑取反

^:按位取反

sizeof:操作数可以是变量、数据类型、数组名、表达式,返回数以字节为基本单位。

注意:因为判断长度不需要对表达式求值,所以类似sizeof(a=b+1)没有向a赋值

 

++和--:分为前缀和后缀形式,要求操作数必须是一个“左值”。

    前缀形式的++操作符出现在操作数的前面,操作数的值被增加,而表达式的值就是操作数增加后的值。

    后缀形式的++操作符出现在操作数的后面,操作数的值仍被增加,但表达式的值是操作数增加前的值。

抽象地说,前缀和后缀形式的增值操作符都复制一份变量值的拷贝,用于赋值操作

前缀操作符在拷贝之前,先增值。

后缀操作符在拷贝之后,在增值。

前缀和后缀操作符的结果不是被它们所修改的变量,而是变量的拷贝!

 

4.1.6关系操作符

> >=  <  <= !=  ==

结果都是一个整形值,不是布尔型。如果两端的操作数符合操作符指定的关系,表达式的结果即是1,不符合则是0。

 

4.1.7逻辑操作符

&& 和  ||

注意它们都有“短路求值”short-circuited evaluation

例:if ( x>=0 && x< MAX && array[x] == 0)//先检查数组的下表是否在合法范围之内。

 

4.1.8条件操作符

Expression1? Expression2 : Expressionx3;

0 0
原创粉丝点击