详细的那个,运算符,此处不再赘述,请参考《C程序设计》(谭浩强)(附录C)。这里,只提及,经常用的,以及我 曾经犯过的错误。
算术运算符:
求余运算符:“ %”,两侧均应为 整型数据(不能为float or double) 。
(7%4 = 3)
除法运算符:两个整数相除结果为整数。
注意:
1. 在有负操作数的情况下, 整数除法截取的方向以及取模运算符结果的符号仅取决于具体的机器实现方式,这和处理上溢或下溢的方式一样。
2. 如果参加+ - * / 的两个数中有一个为double or 实数,则结果为 double ,因为所有实数都按double 型 进行运算。
自增,自减运算符:
i ++ , ++ i 的区别:
int i = 3 ;
j = ++ i ( i 的值 先为 4 , 再赋给j , j = 4 )
j = i ++ (先将i的值赋给j , j 的值为 3 , 然后 i 变为4)
赋值运算符:
区分“ = ”和“ ==”,我曾经在这儿犯过错。我当初的一个傻不拉几的错误,(http://zhidao.baidu.com/question/399849425.html?quesup2&oldq=1)
逗号运算符:
形式:
表达式1,表达式2,表达式3
求值顺序:
先求解表达式1,然后求表达式2,再求表达式3,整个逗号表达式的值为表达式3的值。
eg;
printf(“%d , %d , %d ” , ( a , b , c) , b ,c); (a , b , c)的值为 c
关系与逻辑运算符:
所求得的值为一个逻辑量“真”or“假”(在C++有逻辑常量true,flase , 在C语言中,用 ‘1’ ‘0 ’ 表示。)
逻辑运算符两侧的运算对象不但可以是0和1,或者是0 和非0 的整数值,也可以是 字符型,实型,或指针类型。
位运算符(重点讨论,因为以前没有接触过)
运算符 | 含义 | 运算符 | 含义 |
& | 按位与 | ~ | 取反 |
| | 按位或 | << | 左移 |
^ | 按位异或 | >> | 右移 |
按位与:&
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0.
3&5 = 1
用途:
1. 清零。如果想将一个单元清零,即 使其全部二进制位为0 , 只要找一个二进制数,其中各个位符号符合:原来的数中为1的位,新数中相应为0,然后使二者进行&运算,即可达目的。
2. 取一个数中某些指定位。
3. 想将哪一位保留下来,就与一个数进行&运算,此数在该位取1.
按位或:
两个相应的二进制位中只要有一个为1,该位的结果为1.
用途:
按位或运算常用来对一个数据的某些位定值为1.
异或运算:
规则:若参见运算的两个二进制位同号,则结果为0 , 异号则为1.
用途:
1. 使特定位翻转。
2. 与0相^,保留原值。
3. 交换两个值,不用临时变量。。
取反运算符:(~)
“ ~”,单目运算符,将一个二进制数按位取反。
(重中之重)
左移运算符(<<)
将一个数的各二进制全部左移若干位。a
右移运算符(>>),
将一个数的各二进制全部右移若干位。
注意:
在右移时,对无符号数,右移时左边高位移入0,;对于有符号的值,如果原来符号位为0 , 则左边也移入0 , 如果符号位原来为1.则左边移入0 还是1,取决于所用的系统。
( 到目前为止,我依旧不知道,位运算符 怎么用,准确的说是: 没见过,在程序中怎么用,只见过 移位运算)