C基础二

常量
  • #define 宏定义常量
  • -const 定义常量 ,不安全可以通过指针修改
变量
  • 在程序运行过程中,其值可以改变
二进制 ------逢二进一
  • 十进制转二进制
    • 除二取余反向取值法
  • 二进制转十进制
    • 权值法 将二进制的位数乘以2的n次幂,得到数相加
    int a = 123;		    //十进制方式赋值
	int b = 0123;		//八进制方式赋值, 以数字0开头
	int c = 0xABC;  	//十六进制方式赋值

	//如果在printf中输出一个十进制数那么用%d,八进制用%o,十六进制是%x
	printf("十进制:%d\n",a );   // 十进制输出
	printf("八进制:%o\n", b);	// %o,为字母o,不是数字
	printf("十六进制:%x\n", c);  // x 小写输出 ,X 大写输出
	printf("十六进制:%u\n", d);  // u 无符号
打印格式含义
%hd输出short类型
%d输出int类型
%l输出long类型
%ll输出long long类型
%hu输出unsigned short类型
%u输出unsigned int类型
%lu输出unsigned long类型
%llu输出unsigned long long类型
sizeof()
  • 计算数据类型在内存中所占的字节(Byte)大小
  • 32 bit操作系统中的默认大小

数据类型说明内存占用大小
char字符型1字节
short短整型2字节
int整型4字节
float单精度浮点型4字节
long长整型4字节
long long长长整型8字节
double双精度浮点型8字节
源码
  • 一个数的原码(原始的二进制码)有如下特点:
    • 最高位做为符号位,0表示正,为1表示负
    • 其它数值部分就是数值本身绝对值的二进制数
    • 负数的原码是在其绝对值的基础上,最高位变为1
反码
  • 对于正数,反码与原码相同
  • 对于负数,符号位不变,其它部分取反(1变0,0变1)
补码
  • 在计算机系统中,数值一律用补码来存储,用补码进行运算

  • 补码特点:

    • 对于正数,原码、反码、补码相同
    • 对于负数,其补码为它的反码加1
    • 补码符号位不动,其他位求反,最后整个数加1,得到原码
    • 根据补码求反码就 -1
无符号和有符号的区别
  • 当我们写程序要处理一个不可能出现负值的时候,一般用无符号数,这样可以增大数的表达最大值。
  • unsigned
    • 无符号数最高位不是符号位,而就是数的一部分,无符号数不可能是负数。
  • signed
    • 有符号数是最高位为符号位,0代表正数,1代表负数。

数据类型占用空间取值范围
short2字节-32768 到 32767 (-215 ~ 215-1)
int4字节-2147483648 到 2147483647 (-231 ~ 231-1)
long4字节-2147483648 到 2147483647 (-231 ~ 231-1)
unsignedshort2字节 0 到 65535 (0 ~ 216-1)
unsignedint4字节 0 到 4294967295 (0 ~ 232-1)
unsignedlong4字节 0 到 4294967295 (0 ~ 232-1)
ASCII对照表
ASCII值控制字符ASCII值字符ASCII值字符ASCII值字符
0NUT32(space)64@96
1SOH33!65A97a
2STX34"66B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL39,71G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR45-77M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92/124\
29GS61=93]125}
30RS62>94^126`
31US63?95_127DEL
转义字符
  • \
数值溢出
  • 当超过一个数据类型能够存放最大的范围时,数值会溢出。
  • 有符号位最高位溢出的区别:符号位溢出会导致数的正负发生改变,但最高位的溢出会导致最高位丢失。
#include <stdio.h>

int main()
{
	char ch;

	//符号位溢出会导致数的正负发生改变
	ch = 0x7f + 2; //127+2
	printf("%d\n", ch);
	//	0111 1111
	//+2后 1000 0001,这是负数补码,其原码为 1111 1111,结果为-127

	//最高位的溢出会导致最高位丢失
	unsigned char ch2;
	ch2 = 0xff+1; //255+1
	printf("%u\n", ch2);
	//	  1111 1111
	//+1后 10000 0000, char只有8位最高位的溢出,结果为0000 0000,十进制为0

	ch2 = 0xff + 2; //255+1
	printf("%u\n", ch2);
	//	  1111 1111
	//+1后 10000 0001, char只有8位最高位的溢出,结果为0000 0001,十进制为1

	return 0;
}
实型(浮点型):float、double
  • 实型变量也可以称为浮点型变量,浮点型变量是用来存储小数数值的。在C语言中, - - 浮点型变量分为两种: 单精度浮点数(float)、 双精度浮点数(double), 但是double型变量所表示的浮点数比 float 型变量更精确
类型限定符
限定符含义
extern声明一个变量,extern声明的变量没有建立存储空间。extern int a;
const定义一个常量,常量的值不能修改。const int a = 10;
volatile防止编译器优化代码
register定义寄存器变量,提高效率。register是建议型的指令,而不是命令型的指令,如果CPU有空闲寄存器,那么register就生效,如果没有空闲寄存器,那么register无效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值