常见操作符

1、+ — * / << >> (移位操作符)
2、按位与: & 1&1=1 0&1=0 1&0=0 0&0=0 同真为真
3、按位或: | 1|1=1 0|1=1 1|0=1 0|0=0 一个为真结果为真
4、异或: ^ 相同为0不同为1
5、逻辑反:! 数据前加~ 表示取反
6、自增自减:i++(先使用,后自增) i-- ;前置 ++i(先自增, 后赋值) ;后置 --i
7、逻辑与:&& 逻辑或:||
8、条件操作符(三目运算符、逗号运算符)
int max = x > y ? x : y; 三目运算
int a = (1, 2, 3, 4, 5); 逗号运算符

关键字

1、typedef :类型重命名(除非特殊要求一般不使用)
2、static
A、static 修饰局部变量只会改变其生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束,但是它的作用域没有变化
B、全局变量是支持跨文件访问的,static 修饰全局变量代表该全局变量只在本文件内有效,只能在本文件访问,但可以被本文件中的函数进行间接访问
C、函数访问也是支持跨文件的,static 修饰函数表示该函数只在本文件被调用或访问,不能跨文件访问

小点点

1、赋值运算符 必须有“=”
2、定义变量: 1、开辟空间,大小由类型决定 2、向空间内容放置数据
3、初始化:把开辟空间和放置内容数据一起进行
赋值:先开辟空间,后进行赋值
4、变量只能被初始化一次但可以多次赋值
定义只能定义(开辟空间+放置内容)一次,声明可以声明多次
5、 #define 宏定义
6、内存中空间的编号称为地址(空间连续编址),提高查找效率,编址是硬件电路自动完成的,一个变量:变量的空间,变量的内容
7、a=20 用的是a的空间;int b=a 用的是a的内容

int a = 10;
int b = 20;
int *p = &a;    
         //P是一个指针变量(指针大小在32位中是4字节,在64位中是8字节),要开辟空间,地址是数据,数据可以放在空间里面
p = &b;         // p表示变量的空间
int *q = p;     // p表示变量的空间

代码块

1、注意左移右移(整数占 32位 bit 位)

#include<stdio.h>
#include<windows.h>
int main()
{ 
 int x = 15;  
     //8+4+2+1=2^3 + 2^2  + 2^1 + 2^0 = 1000 + 100 + 10 + 1 = 1111 (二进制)
     //整数占32 个bit位,00000000 00000000 00000000 00001111
 int y = 5;
printf("%d\n", x >> 1);  
//右移 000000000 00000000 00000000 0000111  4+2+1
printf("%d\n", x >> 1);
//左移 0000000 00000000 00000000 000011110  16+8+4+2+0
printf("%d\n", x + y);
printf("%d\n", x - y);
printf("%d\n", x * y);
printf("%d\n", x / y);
printf("%d\n", x % y);
system("pause");
 return 0;
 }

2、按位与、或、异或

#include<stdio.h>
#include<windows.h>
int main()
{
printf("%d\n", 2 & 6);
//0000 0000 0000 0000 0000 0000 0000 0010 
//0000 0000 0000 0000 0000 0000 0000 0110  &
//0000 0000 0000 0000 0000 0000 0000 0010

printf("%d\n", 2 | 6);
//0000 0000 0000 0000 0000 0000 0000 0010 
//0000 0000 0000 0000 0000 0000 0000 0110  |
//0000 0000 0000 0000 0000 0000 0000 0110

printf("%d\n", 2 ^ 6);
//0000 0000 0000 0000 0000 0000 0000 0010 
//0000 0000 0000 0000 0000 0000 0000 0110 ^
//0000 0000 0000 0000 0000 0000 0000 0100
system("pause");
 return 0;
}

3、逗号运算符、三目运算符

int a = (1, 2, 3, 4, 5); 
      //逗号,a=5(最后一个逗号后边的数)
printf("%d\n", a);
printf("请输入对应的两个数据<x, y>:");
int x = 0;
int y = 0;
scanf("%d %d", &x, &y);
int max = x > y ? x : y;     //三目运算符
printf("max= %d\n", max);

``
`
初始做法:

```cpp
int max = 0;
if (x > y)
{max = x;}
else
{max = y;}

4、地址

nt x = 10;
printf("%d\n", x);
printf("0x%p\n", &x);   //十六进制(Ox)表示地址位置(%p  &)

5、运算符

int x = 0;
x = 10;
x += 20;    //x = x + 20;
x *= 10;    //x = x * 10;
x /= 10;
x -= 10
x %= 10;
 x >>= 1;
x <<= 1;
 x &= 1;
x |= 1;
x ^= 1;

6、宏定义

#define Double(x) x*x 
  /*
  int Double(int x)
  {
  return x * x;        //int y = x * x;  return y;
  }
  */
int main()
{
printf("%d\n", 10 * Double(10 + 1));       //10*10+1*10+1=111
printf("%d\n", Double(10+1));   //10+1*10+1=21
system("pause");
 return 0;
}