这几天整理的比较慢,因为有一些是之前的东西在这里做再次批注和解释,更加详细一点

int Max(int x,int y)
{

	if(x>y)
		return x;
	else
		return y;
}
int main ()
{
	int num1=10;
	int num2=20;
	int max=0;
	max=Max(num1,num2);
	printf("max=%d\n",max);
	return 0;
}

上来就是之前函数的应用,两个数找最大值!

接下来是对上次笔记的补充,单目操作符~是对一个二进制进行按位取反!

int main()
{
	int a=0;//4个字节32bit位
	int b=~a;//b是有符号的整形
	//~--->按(2进制)位取反
	//000000000000000000000000
	//111111111111111111111111-->这个是~按位取反后得到的补码!!,因为第一位是1!为负数
	//原码,反码,补码倒退回去的到原码并输出!
	//由于第一位是1,为负数,而负数在内存中存储的时候,存储的一定是二进制的补码
	//111111111111111111111111补码变反码减一
	//111111111111111111111110反码变原码-->按位取反
	//100000000000000000000001原码-->第一位是表示符号,为负数
	printf("%d\n",b);//使用的,打印的是这个数的原码
	//
	return 0;
}
原码按位取反得到反码加一得到补码
-2
原码100000000000000000000010
反码111111111111111111111101
补码111111111111111111111110

还有++和--,分前置和后置

int main()
{
	int a=10;
	int b=a++;//后置++,先使用,再++
	int b=++a;//前置++,先++,再使用
	printf("a=%d b=%d\n",a,b);
	return 0;
}
int main ()
{
	int a=10;
	int b=a--;
	int b=--a;//与上面同理
	printf("a=%d\nb=%d\n",a,b);
	return 0;
}

还有(类型)这种强制类型转换

int main()
{
	int a=(int)3.14;//(类型)强制类型转换
	//原来3.14是double类型
	return 0;
}//这些都是上节单目操作符的剩下内容
还有*  &这两个后面会讲到

上一章的关系操作符= <= == !=

逻辑操作符

逻辑操作符
int main()
{
	int a=3;
	int b=5;
//	int c=a&&b;
	int c=a||b;
	//真--非0
	//假--0
	//&&--逻辑与
	//||--逻辑或
	printf("%d\n",c);
	return 0;
}
相对简单一点!

条件操作符,三目操作符!

条件操作符
exp1?exp2:exp3三目操作符
int main()
{
	int a=10;
	int b=20;
	int max=0;
	max=(a>b?a:b);
//	if(a>b)
//		max=a;
//	else
//		max=b;
	printf("%d",max);	
	return 0;
}

逗号表达式

逗号表达式
exp1,exp2,exp3
int Add(int x,int y)
{
	int z=0;
	z=x+y;
	return z;
}

下标引用操作符,函数调用操作符,这两个之前接触过不细讲

int main()
{
	int arr[10]={0};
	//arr[4];//[]--下标引用操作符
	//即访问其下标为4的数,根据前面0,1,2,3,4
	int a=10;
	int b=20;
	int sum=Add(a,b);//()-->函数调用操作符
	printf("sum=%d\n",sum);
	return 0;
}

还有.   ->结构成员!也是下一章讲到

常见关键字

c语言初学笔记3_反码

int main ()
{
	auto int a=10;//局部变量-自动变量一般省略掉
	return 0;
}
break用在循环和switch case
goto后面介绍
register寄存器关键字
计算机存储数据时
寄存器,高速缓存,内存,硬盘(大小-->变小)
cpu-中央处理器,从更高的速度的寄存器拿更快!
int main()
{
	register int a=10;//把a定义成寄存器变量
	
	return 0;
}

signed和unsigned

int main()
{
	int a=10;
	a=-2;
	//int 定义的变量是有符号的
	//signed int;真正的是这个只是省略掉了
	//unsigned int;无符号数
	return 0;
}

void test函数和static

void test ()//test函数
{
	static int a=1;//a是一个静态的局部变量
	//static 修饰局部变量
	//局部变量的生命周期变长,不再用完就销毁
	//static 修饰全局变量,举个例子,在最下面和另一个文件
	a++;
	printf("a=%d\n",a);
}
int main ()
{
	int i=0; 
	while(i<5)
	{
		test();
		i++;
	}
	return 0;
}

struct结构体关键字--下一章说!

typedef类型定义

int main()
{
	//int float;//err
	//typedef-类型定义-类型重定义
	typedef unsigned int u_int;
	unsigned int num=20;
	u_int num2=20;//遇上面一模一样没有任何区别
	return 0;
}

union-联合体or共用体

void-无or空

volatile-比较少用而且难,操作系统再说

extern声明外部函数!细讲

#include<stdio.h>
#include"abc.c"
int main()
{
	extern int g_val;
	//extern-->是用来声明外部符号的//看另外一个笔记
	printf("g_val=%d\n",g_val);
	return 0;
}

//新建一个ctrl+n,命名位abc。c与上面的项目连接起来!
#include <stdio.h>
int g_val=100;

我们之前学过#define定义的标识符常量

现在学习它另一个功能

#define可以定义宏-带参数(在标识符常量基础上加的)

#define MAX(x,y) (x>y?x:y)
int main ()
{
	int a=20;
	int b=10;
	//宏的方式
	int max=MAX(a,b);
	printf("max=%d\n",max);
	return 0;
}//简单了解即可后期再详细了解!

指针!!!!!(important)

8bit=1byte

1024bte=1kb

以此类推

划分一个一个空间,访问空间就需要地址

32位-->32根地址线/数据线,一旦通电就有正电和负电之分(分别用1和0来表达)

例如00000000000000000000000000000000,总共有2^32个,把它作为内存编号就是有2^32个内存编号

从上面我们了解到两个点就是如何产生地址 以及一个空间就是一个字节(而1个bit位不行)

int main ()
{
	int a=10;//4个字节
	//&a//取地址
	//p=&a;//有一种整型变量是用来存放地址的-指针变量
	//定义方式
	int* p=&a;
	//printf("%p\n",&a);
	//printf("%p\n",p);
	//存地址就是为了有朝一日可以从p找到a,但是从p如何找到a呢?
	*p;//*-->解引用操作符
	*p=20;
	printf("a=%d\n",a);
	//printf("%p\n",&a);//%p-->打印地址000000000065FE1C
	return 0;
}

int main ()
{
	char ch='w';
	char*pc=&ch;
	*pc='a';
	printf("%c\n",ch);
	return 0;

}

总结上述,指针用法以及定义方式

int a=10;//创建了一个变量a,有自己的地址
	int*p=&a;//创建了一个p空间,这个空间放的是a的地址
	*p=20;返回到a地址,重新定义

图示

c语言初学笔记3_操作符_02

指针的大小

在32位平台一个指针变量的大小就是32bit=4个字节

int main ()
{
	char ch='a';
	char*pc=&ch;
	printf("%d\n",sizeof(pc));//64位!8个字节
	
	return 0;
}

以上就是这个星期了解的全部内容,包括对之前单目操作符的再补充,和对条件操作符的认识,关键字的初步探索,为后面的结构体做准备,最重要就是对指针初步认识(important)