这几天整理的比较慢,因为有一些是之前的东西在这里做再次批注和解释,更加详细一点
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;
}
还有. ->结构成员!也是下一章讲到
常见关键字
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地址,重新定义
图示
指针的大小
在32位平台一个指针变量的大小就是32bit=4个字节
int main ()
{
char ch='a';
char*pc=&ch;
printf("%d\n",sizeof(pc));//64位!8个字节
return 0;
}
以上就是这个星期了解的全部内容,包括对之前单目操作符的再补充,和对条件操作符的认识,关键字的初步探索,为后面的结构体做准备,最重要就是对指针初步认识(important)
标签:return,语言,int,笔记,--,初学,操作符,printf,main From: https://blog.51cto.com/u_16284199/7975289