常见操作符
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;
}