第七章:C语言的操作符

简介: 说起操作符大家都不陌生,从我们最初的 + - c * / 加减乘除,到更加深奥的操作符,而今天我要有完整的系统来理清楚C语言的操作符到底有什么,和它们相关的用法,话不多说,直接走进今天的主题----C语言的操作符。

 说起操作符大家都不陌生,从我们最初的 +  -  c   *  /  加减乘除,到更加深奥的操作符,而今天我要有完整的系统来理清楚C语言的操作符到底有什么,和它们相关的用法,话不多说,直接走进今天的主题----C语言的操作符。


36c5f6b939384618bcee533e46661148.png

一:算数运算符


+      -      *      /     %(取模)


这里不细讲加减乘,加减乘和数学是一样的,这里只谈   /   %。


37245cb922a540c98b1c29c7d8c6ef8a.png


二:移位操作符


<< (左移操作符)  >>  (右移操作符)---移动是二进制哟(移的是补码)(在32比特位下移动)



0934f0ec0ec04b32ba486200647869e8.png


有些编译器不支持移动负数,移动后不改变自身


三:位操作符 (计算的是二进制)


&  (相同为 1 即为 1 ,有 0 则为 0 )

|   (有 1 则为 1 ,两个相同时则为0)

^    (相同为 0 ,相异为 1 )


①  &  |   ^ 计算

#include<stdio.h>
int main()
{
  int a = 1;
  int b = 2;
  int x1, x2, x3;
  // a 的二进制 00000000 00000000 00000000 00000001
  // b 的二进制 00000000 00000000 00000000 00000010
  x1 = a & b;
  // a  的二进制 00000000 00000000 00000000 00000001
  // b  的二进制 00000000 00000000 00000000 00000010
  // x1 的二进制 00000000 00000000 00000000 00000000
  x2 = a | b;
  // a  的二进制 00000000 00000000 00000000 00000001
  // b  的二进制 00000000 00000000 00000000 00000010
  // x2 的二进制 00000000 00000000 00000000 00000011
  x3 = a ^ b;
  // a  的二进制 00000000 00000000 00000000 00000001
  // b  的二进制 00000000 00000000 00000000 00000010
  // x3 的二进制 00000000 00000000 00000000 00000011
  //x1 = 0,x2 = 3,x3 = 3
  printf("x1 = %d,x2 = %d,x3 = %d\n", x1, x2, x3);
  return 0;
}


②不能创建变量(第三个变量),实现两个数的交换

#include<stdio.h>
//方法一:
//int main()
//{
//  int a = 1;
//  int b = 2;
//  a = a + b;
//  b = a - b;
//  a = a - b;
//  printf("a = %d,b = %d\n", a, b);
//  return 0;
//}
//当数字很大时就合适了
//方法二:
int main()
{
  int a = 1;
  int b = 2;
  a = a ^ b;  
  b = a ^ b; //看成 b = ( a ^ b ) ^ b,这里 b 和 b就可以消除
  a = a ^ b; //这里其实就变成 a = ( a ^ b ) ^ a,这里 a 和 a就可以消除
  printf("a = %d,b = %d\n", a, b);
  return 0;
}


四:赋值操作符( = )


+=     -=     *=      /=     %=     >>=    <<=     &=     |=       ^=(复合赋值符)


#include<stdio.h>
int main()
{
  float weight = 55.5f;//加 f 的目的使区分double
  double high = 1.78;
  int age = 18;
  return 0;
}
//记住 C语言的 = 和 == 是两码事
// a =  1  赋值运算符
// a == 1 是判断 a 是否等于1


五:单目操作符

41ffaade15e14a73ad30401af53e44ec.png

95331147cbce4d07a0a1a973708e9cd0.png



六:关系操作符


>              >=             <           <=           !=          ==

这里记住          a =  1  赋值运算符            a == 1 是判断 a 是否等于1


七:逻辑操作符


&& (并且的意思)                                 ||  (或者的意思)


bdd3166f83a24fd7ad6258cc7c0f6a7e.png


#include<stdio.h>
//int main()
//{
//  int a = 0;
//  int b = 0;
//  if (a == 0 && b == 0)
//  {
//    printf("hehe\n");
//  }
//  else
//  {
//    printf("haha\n");
//  }
//  return 0;
//}
//打印出hehe
int main()
{
  int a = 0;
  int b = 0;
  if (a == 0 || b == 1)
  {
    printf("hehe\n");
  }
  else
  {
    printf("haha\n");
  }
  return 0;
}
//打印出hehe


八:条件操作符


(   语句 1      ?  (语句 2 :语句 3))如果语句1为真就执行语句2,否则执行语句3


#include<stdio.h>
int main()
{
  int a = 0;
  int b = 1;
  int c = a > b ? a : b;
  //如果 a 大于 b 就把 a 的值赋给 c,否则就把 b 的赋给 c
  printf("%d\n", c);
  return 0;
}
//打印出:1


九:逗号表达式


逗号表达式,就是用逗号隔开的多个表达式。


逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

#include<stdio.h>
int main()
{
  int a = 1;
  int b = 2;
  int c = (a > b, a = b + 10, a, b = a + 1);
  //这里 a > b 没有什么关系,a = b + 10 = 2 + 10 = 12
  //这里 a 没有什么关系,b = a + 1 = 12 + 1
  //最后 c = b
  printf("%d\n", c);//打印出:13
  return 0;
}


十:下标引用(已讲),函数调用(已讲)和结构体成员


下标引用:[  ]

函数调用:函数名();

结构体成员:  .    ->(这里不细讲,后面会详细介绍)

关于操作符的优先级图片


fc930d115a7b47c1bdae065f2d46b6eb.jpg


不知不觉就到了尾声呢,咱们第七章的知识点就到这里了啦,作为小白的我,可能写的不是很好,不对的地方还请大佬大佬指点指点。

目录
相关文章
|
19天前
|
C语言
C语言之操作符1
C语言之操作符1
26 0
|
19天前
|
编译器 C语言
操作符详解(C语言基础深入解析)
操作符详解(C语言基础深入解析)
|
19天前
|
存储 编译器 C语言
爱上C语言:操作符详解(下)
爱上C语言:操作符详解(下)
|
19天前
|
算法 测试技术 C语言
【C语言】异或(^)操作符
【C语言】异或(^)操作符
20 0
|
19天前
|
存储 编译器 程序员
C语言第十六弹---操作符(下)
C语言第十六弹---操作符(下)
|
6天前
|
存储 编译器 C语言
C语言(7)----操作符
C语言(7)----操作符
17 0
|
6天前
|
编译器 C语言
C语言(3)----分支和循坏以及操作符
C语言(3)----分支和循坏以及操作符
15 1
|
6天前
|
存储 缓存 编译器
C语言(2)----数据类型、变量以及操作符
C语言(2)----数据类型、变量以及操作符
12 0
|
6天前
|
编译器 C语言
C语言操作符详解(下)
C语言操作符详解(下)
|
6天前
|
存储 算法 编译器
C语言操作符详解(上)
C语言操作符详解(上)