5.27学习所得:操作符、常见关键字、指针

操作符

单目操作符

在这里插入图片描述

补充知识:原码、反码、补码

原码:
一个数X的原码表示为:符号位用0表示正,用1表示负;数值部分为X的绝对值的二进制形式。这里将X的原码表示记为[X]原。
例如,当X=+1100001时,则[X]原=01100001。
当X=-1110101时,则[X]原=11110101。
在原码中,0有两种表示方式,分别如下。
当X=+0000000时,[X]原=00000000。
当X=-0000000时,[X]原=10000000。
反码:
一个数X的反码表示方法为:若X为正数,则其反码与原码相同;若X为负数,则在原码的基础上,符号位保持不变,数值位各位取反。这里将X的反码表示记为[X]反。
例如,当X=+1100001时,则[X]原=01100001,[X]反=01100001。
当X=-1100001时,则[X]原=11100001,[X]反=10011110。
在反码表示中,0也有两种表示形式,具体如下:
当X=+0时,则[X]反=00000000。
当X=-0时,则[X]反=10000000。
补码:
一个数X的补码表示方式为:当X为正数时,则X的补码与X的原码相同;当X为负数时,则X的补码,其符号位与原码相同,其数值位取反加1。这里将X的补码表示记为[X]补。
例如,当X=+1110001,则[X]原=01110001,[X]补=01110001。
当X=-1110001,则[X]原=11110001,[X]补=10001111。
三者的关系:原码符号位不变,其它位按位取反得到反码,反码加一得到补码。相反的关系推过去即可。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 0;//int储存4个字节00000000000000000000000000000000
	int b = ~a;//b是有符号的整型。~按二进制位取反得到11111111111111111111111111111111,符号位为-1计算机系统会将其识别为某一负数的补码,若要输出这个负数,我们就要进行补码回推原码的工作
	printf("%d\n", b);//回推原码得到10000000000000000000000000000001即这个负数为-1
	return 0;
}

所以这个关系你理解了吗?我是理解了很久。
~a=[b]补

int main()
{
	int a = 10;
	int b = a++;//后置++:先把a的值赋给b,a自己再增加1,若此处改为前置++则先把a+1变为11,b也变为11。
	printf("a=%d b=%d\n", a, b);//a=11 b=10
	return 0;
}
int c =(int)3.14//强制转化符

关系操作符

在这里插入图片描述

逻辑操作符

在这里插入图片描述

条件操作符(三目操作符)

在这里插入图片描述

int main()
{
	int a = 10;
	int b = 20;
	int max = 0;
	max = (a > b?a:b);
	printf("%d\n", max);
	return 0;
}

逗号表达式

exp1,exp2,exp3, …expN

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

[] () . ->

常见关键字(不能与变量名冲突)

在这里插入图片描述
补充点:计算机存储数据体系
在这里插入图片描述
一开始CPU与内存直接联系取用内存,直到后来内存速度发展跟不上CPU,于是就采用了减少大小换取速度的方式,CPU与寄存器取用,寄存器往高速缓存取,高速缓存再往内存取的方式以提升电脑速度。

typedef:类型定义(重命名)

typedef unsigned int unit_32;
int main()
{
	unsigned int unm1 = 0;
	unit_32 num2 = 0;//这两个变量的类型是一样的
	return 0;
}

static

void test()
{
	int a = 1;
	a++;
	printf("a=%d\n", a);
}

int main()
{
	int i = 0;
	while (i < 5)
	{
		test();
		i++;
	}
	return 0;
}

在这里插入图片描述

void test()
{
	static int a = 1;
	a++;
	printf("a=%d\n", a);
}

int main()
{
	int i = 0;
	while (i < 5)
	{
		test();
		i++;
	}
	return 0;
}

在这里插入图片描述
static修饰局部变量生命周期变长,破坏掉另一个在同一工程却不在同一页面全局变量的生命周期,让其只能在自己所在源文件使用(extern也没用)。

#define定义常量和宏

#define max = 100;

就可以将max定义为常量

#define max(X,Y) (X>Y?X:Y)

指针

补充:内存:以一个字节为单位而不是一个比特位。

int main()
{
	int a = 10;
	int* p = &a;//指针变量:存放地址
	printf("%p\n", &a);
	printf("%p\n", p);
	//*p即解引用操作符
	return 0;
}

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值