郝斌C语言笔记 -- 运算符

2017-11-24  本文已影响30人  Jorunk

运算符

1.算术运算符

       +       -       *        /(除)        %(取余数)

2.关系运算符

       >       >=      <        <=         !=(不等于)      =

3.逻辑运算符

       !(非)       &&(并且)       ||(或)

       !真            假
       !假            真

       真&&真         真
       真&&假         假
       假&&真         假
       假&&假         假


       真||假         真
       假||真         真
       真||真         真
       假||假         假

4.C语言对真假的处理

5.赋值运算符

       =      +=     *=      /=

6.优先级别

7.自增(自减)

分类

++i;
i++;

前自增和后自增的异同

学习自增要明白的几个问题

  1. 我们编程时应该尽量屏蔽掉前自增和后自增的差别
  2. 自增表达式最好不要作为一个更大的表达式的一部分来使用,或者说 i++ 和 ++i 单独成一个语句,不要把它作为一个完整复合语句的一部分来使用,如:
 int m = i++ + ++i + i + i++;
 printf("%d %d %d",i++,++i,i);
//这样写是不规范代码,而且是不可移植的代码

8.三目运算符

格式

A ? B : C

等价于

if (A) {
        B
    } else {
        C
    }

9.逗号表达式

格式

(A, B, C, D)

功能

位运算符

& ---按位与

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

5 (0101) & 7 (0111) = 5
21 (00010101) & 7 (0111) = 5
5 (0101) & 1 (0001) = 1
5 (0101) & 10 (1010) = 0

| ---按位或

1 | 0 = 1
1 | 1 = 1
0 | 1 = 1
0 | 0 = 0

~ --- 按位取反

^ ---按位异或

1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 1
0 ^ 0 = 1

<< --- 按位左移

面试题:
        A) i = i* 8;
        B) i = i<< 3;
        请问上述两个语句,哪个语句执行速度快
        答案:B快

>> --- 按位右移

面试题:
        A) i = i / 8;
        B) i = i>> 3;
        请问上述两个语句,哪个语句执行速度快
        答案:B快

位运算的现实意义

上一篇 下一篇

猜你喜欢

热点阅读