C语言入门篇--充分理解操作符

目录

  • 1.算术操作符
    • 1.1除法运算
    • 1.2取模运算
  • 2.移位操作符
    • 相关知识
      • 1.移位运算是站在二进制角度移位的
      • 2.左移右移,原始变量值不发生变化除非给原始变量赋值
      • 3.整数移位运算不能整除时,只保留整数部分
      • 4.C语言中的移位运算符
      • 5.移位分为算术移左移、算术移右移和逻辑左移、逻辑右移
  • 3.位操作符
    • 3.1按位与&
      • 3.2按位或 |
        • 3.3异或 ^
        • 4.赋值操作符
          • 5.单目操作符
            • 5.1 逻辑反操作 !
              • 5.2 负值 - 正值 +
                • 5.3 取地址 &
                  • 5.4 取反 ~
                    • 5.5 前置、后置 ++ - -
                      • 5.6 解引用操作符 *
                        • 5.7 强制类型转换 (类型)
                        • 6.关系操作符
                          • 7.逻辑操作符
                            • 8.条件操作符
                              • 9.逗号表达式
                                • 10.下标引用、函数调用和结构成员

                                  1.算术操作符
                                  + 加
                                  - 减
                                  * 乘
                                  / 除
                                  % 取模

                                  1.1除法运算
                                  除法运算分母不可为零,否则程序会中断报错,所以要在程序中检验分母是否为零。

                                  1.2取模运算
                                  取模即取余数。

                                  2.移位操作符
                                  相关知识
                                  >> 右移
                                  << 左移

                                  1.移位运算是站在二进制角度移位的
                                  eg:
                                  #include int main(){ int x = 15; printf("%d\n", x>>1); printf("%d\n", x<<1); printf("%d\n", x); x = x >> 1; printf("%d\n", x); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  2.左移右移,原始变量值不发生变化除非给原始变量赋值
                                  3.整数移位运算不能整除时,只保留整数部分
                                  4.C语言中的移位运算符 (如<<>>)只能用于整型(如intshortlongchar等),不能用于浮点型(如doublefloat

                                  5.移位分为算术移左移、算术移右移和逻辑左移、逻辑右移 算术左移和算术右移主要用来进行有符号数的倍增、减半;
                                  逻辑左移和逻辑右移主要用来进行无符号数的倍增、减半。

                                  3.位操作符 位操作是站在二进制角度进行操作的。
                                  & 按位与
                                  | 按位或
                                  ^ 按位异或

                                  3.1按位与&
                                  eg:
                                  参与按位与的两二进制位数都为真(1)结果为真,否则只要有一个为假(0)结果为假。
                                  #include int main(){ printf("%d\n", 1 & 1); printf("%d\n", 0 & 1); printf("%d\n", 1 & 0); printf("%d\n", 0 & 0); printf("%d\n", 2 & 6); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  3.2按位或 |
                                  参与按位与的两二进制位数只要有一个为真(1)结果为真,若都为假(0)结果为假。
                                  eg:
                                  #include int main(){ printf("%d\n", 1 | 1); printf("%d\n", 0 | 1); printf("%d\n", 1 | 0); printf("%d\n", 0 | 0); printf("%d\n", 2 | 6); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  3.3异或 ^
                                  参与按位与的两二进制位数相同为假,不同为真。
                                  eg:
                                  #include int main(){ printf("%d\n", 1 ^ 1); printf("%d\n", 0 ^ 1); printf("%d\n", 1 ^ 0); printf("%d\n", 0 ^ 0); printf("%d\n", 2 ^ 6); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  4.赋值操作符
                                  =+=-=*=/=&=^=|=>>=<<=
                                  #include int main(){ int x1 = 0; x1 = 10; //赋值 从右向左赋值 printf("%d\n", x1); int x2 = 20; x2 += 10; //加等 等价于x=x+10; //其他操作符类似 printf("%d\n", x2); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  5.单目操作符 单目操作符即只有一个操作数的操作符。
                                  !逻辑反操作
                                  -负值
                                  +正值
                                  &取地址
                                  sizeof操作数的类型长度(以字节为单位)
                                  ~对一个数的二进制按位取反
                                  --前置、后置--
                                  ++前置、后置++
                                  *间接访问操作符(解引用操作符)
                                  (类型)强制类型转换

                                  5.1 逻辑反操作 !
                                  逻辑真–>非0
                                  逻辑假–>0
                                  eg:
                                  #includeint main(){ int flag = 1; if (!flag)//(flag==1)条件为真即非零,取反(!)后if条件为假即0 {printf("if条件为真!\n"); } else {printf("if条件为假!\n"); } return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  5.2 负值 - 正值 +
                                  给数字前带+ -变成对应的正数或负数。
                                  eg:
                                  #include #include int main(){ int x1 = 10; printf("%d\n", +x1); printf("%d\n", -x1); int x2 = -10; printf("%d\n", +x2); printf("%d\n", -x2); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  5.3 取地址 &
                                  每个变量在内存中都有对应的地址。
                                  eg:
                                  #include int main(){ int x = 10; printf("%d\n", x); printf("0x%p\n", &x); //%p:以十六进制打印地址;加0x:为了打印出来的是变量所对应的标准地址。 return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  5.4 取反 ~
                                  对一个数的二进制按位取反。
                                  eg:
                                  #include int main(){ unsigned x = 1; printf("%u\n", x); printf("%u\n", ~x); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  5.5 前置、后置 ++ - -
                                  ++i :前置++,先自增再赋值使用。
                                  i++ :后置++,先赋值使用再自增。
                                  (- -同理)
                                  eg:
                                  #include int main(){ int i = 3; int a = i++; printf("%d\n", i); printf("%d\n", a); /// int j = 10; int b = ++j; printf("%d\n", j); printf("%d\n", b); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  5.6 解引用操作符 *
                                  eg:关于解引用操作符 的理解以看变量的左值与右值。
                                  #include int main(){ int a = 10; int *p = &a; //指针p指向变量a int b=*p; //*p即解引用指针p,取出指针p所指地址空间里的值,然后赋给变量b printf("%d\n", b); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  5.7 强制类型转换 (类型)
                                  强制类型转换是把变量从一种类型转换为另一种数据类型。
                                  强制类型转换分为隐式转换和显示转换。
                                  eg:
                                  #include int main(){ int a = 10; double b = 3.456; a = b; //隐式转换 printf("%d\n", a); /// int c = 20; double d = 5.555; c = (int)d; //显式转换 printf("%d\n", c); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  6.关系操作符 关系操作符就是用来判断大小关系。
                                  >
                                  >=
                                  <
                                  <=
                                  !=用于测试“不相等”
                                  ==用于测试“相等”

                                  7.逻辑操作符
                                  &&逻辑与
                                  ||逻辑或
                                  && 两边的表达式都为真,结果为真。
                                  | | 两边的表达式只要有一个为真,结果为真。
                                  注意:
                                  &&和| |的判断规则:
                                  && 若第一个表达式为假,结果为假,则不判断第二个表达式。
                                  | | 若第一个表达式为真,结果为真,则不判断第二个表达式。

                                  8.条件操作符
                                  exp1 ? exp2 : exp3//又称三目操作符,它是唯一有3个操作数的运算符
                                  若表达式exp1为真,则执行exp2;
                                  若表达式exp1为假,则执行exp3;

                                  9.逗号表达式 1.逗号表达式中的每个表达式都会执行。
                                  2.逗号表达式中的结果为最后一个表达式的值。
                                  3.可以用()隔开逗号表达式。
                                  exp1, exp2, exp3, …expN
                                  eg:
                                  #include int main(){ int a = 10; int b = 20; int c = 0; int d = ((c=a+b), 2, 3, 4, 5, 6, 7); printf("c=%d\n", c); printf("d=%d\n", d); return 0; }

                                  C语言入门篇--充分理解操作符
                                  文章图片


                                  10.下标引用、函数调用和结构成员
                                  [] //中括号操作符,访问要访问元素的内容
                                  () //函数访问操作符,要调用函数就要在函数名后加(),若函数有参数,则把参数填入()
                                  .//结构体成员运算符,左边必须为实体即变量
                                  -> //结构体指针运算符,左边必须为指针
                                  【C语言入门篇--充分理解操作符】以上就是C语言入门篇--充分理解操作符的详细内容,更多关于C语言操作符的资料请关注脚本之家其它相关文章!

                                    推荐阅读