原码,反码,补码

正数原码,反码,补码相同​

负数在内存中存储的时候,储存的是二进制的补码

二进制最高位存储的是符号位,如果为1则表示的是一个负数,0是正数

原码符号位(最高位)不变,其他位按位取反得到的是反码。

反码加1得到的是补码。

#define _CRTSECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
int a = 0;
//00000000000000000000000000000000
int b = ~a;//b是有符号位的整形
//11111111111111111111111111111111
//原码,反码,补码
//负数在内存中存储的时候,储存的是二进制的补码
//二进制最高位存储的是符号位,如果为1则表示的是一个负数,0是正数
//使用的打印的是这个数的原码
//原码符号位不变,其他位按位取反得到反码
//反码+1得到的是补码
//11111111111111111111111111111111
//11111111111111111111111111111110
//10000000000000000000000000000001
printf("%d", b);// b = -1
return 0;
}

--

++ 前置(先++在使用)、后置++(先使用在++)

前置(先--在使用)、后置--(先使用在--)

#define _CRTSECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
int a = 10;
int b = a++;
printf("%d %d", a, b);//11 10
int c = ++a;
printf("%d %d", a, c);//12 12
return 0;
}

(类型)强制类型转换

#define _CRTSECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
int a = (int)3.14;
return 0;
}

关系操作符

>

>=

<

<=

!=    判断不相等

==    判断相等

逻辑操作符

计算机判断0为假,非0则为真

&& 逻辑与   --  (有一个假则是假)

|| 逻辑或      --   (有一个真则为真)

#define _CRTSECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
//0表示假,非0则是真
//&&有一个假则是假
//||有一个真则为真
int a = 0;
int b = 5;
int c = a && b;
int d = a || b;
printf("%d", c);//0
printf("%d", d);//1
return 0;
}

条件操作符

exp为表达式

exp1 ? exp2 : exp3

如果表达式exp1为真则表达式exp2被执行,

如果表达式exp1为假则表达式exp3被执行。

#define _CRTSECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
int a = 10;
int b = 20;
int max = 0;
max = (a > b ? a : b);
//如果表达式exp1为真则表达式exp2被执行,
//如果表达式exp1为假则表达式exp3被执行。
printf("%d", max);//20
return 0;
}

逗号表达式

exp1 , exp2 , exp3 , ....expN

下标引用、函数调用和结构成员

[]  ()  .  ->

#define _CRTSECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
//int arr[4];//下标操作符
printf("%d", arr[4]);//5
return 0;

}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int add(int x, int y)
{
int z = x + y;
return z;
}
int main()
{
int a, b, c;
scanf("%d", &a);
scanf("%d", &b);
c = add(a, b);
printf("%d", c);
return 0;

}

常见关键字 -自己定义的不能和关键字冲突

auto(自动变量 -默认省略) break(跳出循环)     case(switch)

char(字符型)                    const(常变量)        continue(继续)

default(默认)                   do(循环)               double(双精度浮点型)

else (if else语句)              enum(枚举常量)    extern(引入外部符号)

float(单精度浮点型)          for(循环)               goto(语句)

If(循环)                            int(整形)               long(长整型)

register(寄存器关键字)      return(返回)          short(短整型)

signed(省略 有符号数)      sizeof(计算大小)     static(静态的)

struct(结构体关键字)         switch(case语句)    typedef(类型定义)

union(联合体)                  unsigned(无符号数) void(空)

volatile(后期介绍)            while(循环)

#define _CRTSECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
//typedef - 类型定义 - 类型重定义
typedef unsigned int u_int;
unsigned int num1 = -20;
u_int num2 = -20;
return 0;
}
#define _CRTSECURE_NO_WARNINGS 1
#include <stdio.h>
void test()
{
//static修饰局部变量
//延长局部变量生命周期
//static修饰全局变量
//改变变量作用域 - 让静态的全局变量只能在自己所在的源文件使用
//出了源文件就无法使用
//static修饰函数 -改变了链接属性
//改变作用域 - 变为内部链接属性
static int a = 0;//a变成静态变量输出结果1-5
a++;
int b = 1;
b++;
printf("a = %d\n", a);
printf("b = %d\n", b);//结果5个2
}
int main()
{
int i = 0;
while (i<5)
{
test();
i++;
}
return 0;
}

#define 定义常量和宏

#define定义标识符常量

#define max 1000

#define定义宏

#define add(x,y) ((x)+(y))

#define _CRTSECURE_NO_WARNINGS 1
#include <stdio.h>
//#define定义标识符常量
#define max 1000
//#define定义宏 - 带参数
#define MAX(x,y) (x>y?x:y)
int main()
{
int a = 10;
int b = 20;
int s = MAX(a, b);
printf("s = % d", s);
return 0;
}

指针

为了有效使用内存,把内存划分成一个个小的内存单元,每个内存单元一个字节

为了有效访问到内存每个单元,给内存进行编号,这些编号成为该内存单元的地址

存啥用啥类型

Int* a = &b;(32位4个字节,64位8个byte)

#define _CRTSECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
int a = 10;
int* b = &a;
*b = 20;
printf("%d", a);//20
return 0;
}