跟着鹏哥学习了相当多的知识:操作符、逗号表达式、下标引用、函数调用、结构成员、计算机存储数据及CPU概念、关键字的熟悉(如:typedef类型重定义,static作用)、#define定义常量和宏、指针的重要性
操作符包括关系操作符【> >= < <= != ==】,逻辑操作符【&&逻辑与,II逻辑或(有一真即真)】条件操作符【exp1 ? exp2 : exp3】【如:a>b ? a : b】(部分在上篇文稿)
举例:
逻辑操作符
#include<stdio.h>
int main()
{
//真 -非0
//假 - 0
//&& -逻辑与
int a = 3;
int b = 5;
int c = a && b;
printf("c = %d\n", c);
return 0;
}
条件操作符
#include<stdio.h>
int main()
{
int a = 5;
int b = 3;
int max = 0;
max = (a > b ? a : b);
if (a > b)
max = a;
else
max = b;
printf("max = %d\n", max);
return 0;
}
(只要是整数,内存中存储的都是二进制的补码)(正数:原、反、补、相同)(负数从补码开始)(规定:0为负,1为正)
原码 反码 补码
直接按照正负 原码符号位不变 反码+1
的二进制序数 其他位按位取反得到
从补码到反码逆着来
举例
#include<stdio.h>
int main()
{
int a = 0;//4个字节,32bit位
int b = ~a;//b是有符号的整形
/*~按(2进制)位取反
00000000000000000000000000000000
11111111111111111111111111111111
源码,反码,补码
负数在内存中存储的时候,存储的是二进制的补码
如:1111111111111111111111111111补码先减1得反码
1111111111111111111111111110反码再相反得源码
000000000000000000000000001源码*/
printf("%d\n", b);
return 0;
}
函数调用操作符(用相加函数)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int Add(int x, int y)
{
int z = x + y;
return z;
}
int main()
{
int num1 = 10;
int num2 = 20;
int sum = 0;
int a = 100;
int b = 200;
sum = Add(num1, num2);
sum = Add(a, b);
printf("sum = %d\n", sum);
return 0;
}
//理解就行
//先是10加20出30
//然后100加200出300
static操作符
#include<stdio.h>
void test()//执行命令
{
static int a = 1;//加了static后a 是一个静态的局部变量,延长了局部变量的生命周期,运行窗口得a = 2,3,4,5,6
a++;
printf("a = %d\n", a);//a+=1得2,局部变量生命周期从{开始,从}结束,因此a的值被销毁,因为i<5则执行5次。所以弹执行窗口是5个a = 0
}
int main()
{
int i = 0;
while (i<5)
{
test();//先是0调到void test
i++;
}
return 0;
若static修饰全局变量 - > 改变变量作用域
修饰函数 -> 改变函数链接属性
计算机存储数据
寄存器(register) | |
高速缓存 | cpu - 中央处理器 |
内存 | |
硬盘 |
由下到上访问速度提高,相应存储内存越少。
最后交给cpu处理
关键字词
#define定义常量和宏
#include<stdio.h>
//#define 定义标识符常量
#define MAX 100
int main()
{
int a = MAX;
printf("a = %d\n", a);
return 0;
}
//函数的实现【与下面对比着看】
#include<stdio.h>
int Max(int x, int y)
{
if (x > y)
return x;
else
return y;
}
int main()
{
int a = 10;
int b = 20;
//函数
int max = Max(a, b);
//
printf("max = %d\n", max);
return 0;
}
//宏的定义
#include<stdio.h>
#define MAX(X,Y) (X>Y?X:Y)
int main()
{
int a = 10;
int b = 20;
//宏的方式
int max = MAX(a, b);//
printf("max = %d\n", max);
return 0;
}
指针的概念(先理解内存)
内存理解
指针理解
如若出现错误,希望大佬们点出错误地方,多多指教!