C基础复习

C基础复习

1.数据类型:
有符号数是最高位为符号位,0代表正数,1代表负数。
无符号数最高位不是符号位,而就是数的一部分,无符号数不可能是负数。
当我们写程序要处理一个不可能出现负值的时候,一般用无符号数,这样可以增大数的表达最大值。
	有符号:signed
	无符号:unsigned
 默认情况下,定义变量时省略使用signed,定义无符号的数时要用到unsigned
无符号数输出的占位符:%u\U
整型:
	类型:      范围
		short ,(-2^15 ~ 2^15-1)
		int ,(-2^31 ~ 2^31-1)
		long ,(-2^31 ~ 2^31-1)
		long long,(-2^63 ~ 2^63-1)

   大小:2       4    4      8 
   注:对于long:Windows为4字节,Linux为4字节(32位),8字节(64位)

    sizeof不是函数,所以不需要包含任何头文件,它的功能是计算一个数据类型的大小,单位为字节
	sizeof的返回值为size_t
	size_t类型在32位操作系统下是unsigned int,是一个无符号的整数
   占位符:%hd	%d	 %ld	%lld

2.字符型:
	char ch='a';ASCII码上的东西
	大小写差了32
	字符变量实际上并不是把该字符本身放到变量的内存单元中去,
	而是将该字符对应的 ASCII 编码放到变量的存储单元中。
	char的本质就是一个1字节大小的整型。
	占位符:%c
	大小:1字节

3.浮点型:
	浮点型变量是用来存储小数数值的。在C语言中, 浮点型变量分为两种:
	单精度浮点数(float)、 双精度浮点数(double), 大小分别为4 8字节
	但是double型变量所表示的浮点数比 float 型变量更精确。
	不以f结尾的常量是double类型,以f结尾的常量(如3.14f)是float类型。
	科学法赋值
	a = 3.2e3f; //3.2*1000 = 3200,e可以写E
	printf("a1 = %f\n", a);

	a = 100e-3f; //100*0.001 = 0.1
	printf("a2 = %f\n", a);
	占位符:%f %lf


4.进制:
				十进制,二进制,八进制,十六进制

	输出的占位符:%d		无		%o		%x
	定义八进制是以0开头的 0-7
	定义十六进制是以0x开头 0-9 a-f
5.计算机中数的存储:
	在计算机系统中,数值一律用补码来存储。
	补码特点:
		对于正数,原码、反码、补码相同
		对于负数,其补码为它的反码加1
		补码符号位不动,其他位求反,最后整个数加1,得到原码

6. 数值溢出
	当超过一个数据类型能够存放最大的范围时,数值会溢出。
	有符号位最高位溢出的区别:符号位溢出会导致数的正负发生改变,
	但最高位的溢出会导致最高位丢失。
7.类型限定
	extern	
		声明一个变量,extern声明的变量没有建立存储空间。
		extern int a;//变量在定义的时候创建存储空间
	const	
		定义一个常量,常量的值不能修改。
		const int a = 10;
	Volatile	
		防止编译器优化代码
	register	
		定义寄存器变量,提高效率。
		register是建议型的指令,而不是命令型的指令,
		如果CPU有空闲寄存器,那么register就生效,
		如果没有空闲寄存器,那么register无效。		

8.字符串常量
	符串是内存中一段连续的char空间,默认以'\0'(数字0)结尾。
	字符串常量是由双引号括起来的字符序列,如“china”、“C program”,“$12.5”等都是合法的字符串常量。
	
	printf是输出一个字符串,putchar输出一个char。
		占位符为%s:表示输出一个字符串,遇到\0停止,如果在一个字符数组中没有\0则会溢出 出现烫烫烫~
	getchar是从标准输入设备读取一个char。
	scanf通过%转义的方式可以得到用户通过标准输入设备输入的数据。
		scanf("%d%d",&s,&b);
		是以空格或者换行符分割

scanf()把输入的字符串转换成整数、浮点数、字符或字符串,而
printf()正好与它相反,把整数、浮点数、字符和字符串转换成显示在屏幕上
的文本。
scanf()读取基本变量类型的值,在变量名前加上一个&;
如果用scanf()把字符串读入字符数组中,不要使用&。

void test3() {
	double d = 12.3;
	printf("d = \' %lf \'\n", d);
	int a ,b = 0;
	scanf("%d,%d", &a, &b);
	printf("a=%d,b=%d", a, b);

}


void test1() {






	unsigned int a = 10;
	printf("无符号:%u\n", a);
	int b = 10;
	printf("十进制:%d\n", a);
	
	short c = 10;
	long d = 10;
	long long e = 10;
	float f = 0.1f;
	double g = 0.1;
	printf("short:%d\n", sizeof(c));
	printf("long:%d\n", sizeof(d));
	printf("long long:%d\n", sizeof(e));
	printf("float: %d\n", sizeof(f));
	printf("double: %d\n", sizeof(g));







	printf("八进制:%o\n", a);
	printf("十六进制:%x\n", a);
	printf("请输入一个整数:");
	scanf("%d", &a);
	printf("%d", a);
}

void test2() {
	char ch = 'a';
	printf("sizeof(ch) = %u\n", sizeof(ch));

	printf("ch[%%c] = %c\n", ch); //打印字符
	printf("ch[%%d] = %d\n", ch); //打印‘a’ ASCII的值

	char A = 'A';
	char a = 'a';
	printf("a = %d\n", a);		//97
	printf("A = %d\n", A);	//65

	printf("A = %c\n", 'a' - 32); //小写a转大写A
	printf("a = %c\n", 'A' + 32); //大写A转小写a

	ch = ' ';
	printf("空字符:%d\n", ch); //空字符ASCII的值为32
	printf("A = %c\n", 'a' - ' '); //小写a转大写A
	printf("a = %c\n", 'A' + ' '); //大写A转小写a

}
int main(void)
{
	test3();
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值