C语言重要知识点总结(一)--编译链接过程、数据类型、操作符

本文深入讲解C语言的关键知识点,包括编译链接过程、数据类型(如整型提升、浮点数存储、大小端模式)、操作符(算数、移位、位等)以及数组、结构体等构造类型的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、编译链接过程

编译链接过程一共可以分为五个部分,预处理、编译器、汇编器、链接器、加载器。过程如下图所示
在这里插入图片描述

二、C语言的数据类型

C语言的数据类型分为基本类型,构造类型,指针类型,空类型,逻辑型,复数型。(本篇文章只介绍基本类型)
(一)基本类型
基本类型包括数值类型和字符类型
关于基本类型有以下需要注意的几个点:
1.整型提升
C的整型算数运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达适中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。 如果int能够表示原始数据类型中的所有值,那么这个值就会被转为int型,否则它将被转为unsigned int型。(编译器进行整型提升是为了保证运算结果的正确性,若能保证运算结果无误,也会省略类型提升的这一步操作,通常发生在表达式中存在常量操作数时。)
表达式中的字符和短整型数字在使用之前会被转化成普通整型,整型提升的规则有以下两点:
第一点:若是有符号数,前面的24位补符号位;
第二点:若是无符号数,前面补0.
2.浮点数的存储方式
浮点数的存储遵从国际标准IEEE
无论是单精度还是双精度,内存都分为三个部分,第一个部分是符号位,0代表正,1代表负;第二个部分是指数位,用于存储科学计数法中的指数数据;第三部分是尾数部分。在这里插入图片描述
用二进制科学法表示的第一位都是1(任何浮点数用二进制科学法表示后都是1.xxxxxx乘以2的幂次方形式),因此计算机在存储时,会将小数点前的1省略,23bit的位数部分可以表示的精度为24bit,24bit的精度可以使float型数字精确到小数点后6位。
3.char类型的取值范围为-128到127
在这里插入图片描述
4.大小端
大端模式:是指数据的低位保存在内存的高地址中,而数据的高位保存在低地址中。
小端模式:是指数据的低位保存在内存的低地址中,而数据的高位保存在高地址中。

编程实现判断当前计算机的大小端:

#include <stdio.h>

int main()
{
	int ret = check_sys();
	if(ret==1)
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

//第一种方法
int check_sys()
{
	int i =1;
	return (*(char *)&i);
}

//第二种方法(利用联合)
int check_sys()
{
	union
	{
		int i;
		char c;
	}un;
	un.i = 1;
	return un.c;
}

(二)构造类型
构造类型包括数组,结构体,共用体,枚举
1.数组([])
2.结构体(struct)
3.共用体(union)
4.枚举(enum)
(三)指针类型(*)
(四)空类型(void)
(五)逻辑型(_bool)
(六)复数型(_complex_imag)

三、操作符

1.算数操作符
加(+) 减(-) 乘(*) 除(/)
2.移位操作符
左移操作符(<<) 右移操作符(>>)
3.位操作符
按位与(&) 按位或(|) 按位异或(^)
(它们的操作数必须是整数)
下面有一道例题
链接:https://blog.youkuaiyun.com/www_cainiao_com/article/details/87099014
4.赋值操作符
+= 、-= 、 *= 、 /= 、%= 、>>= 、 <<= 、 &= 、 |= 、 =
5.单目操作符
逻辑反(!) 负值(-)正值(+) 取地址(&)操作数的类型长度(sizeof) 对一个数的二进制按位取反(~) 自加(++) 自减(–) 间接访问操作符(*)
6.关系操作符
> 、 >= 、 < 、 <= 、 != 、 ==
7.逻辑操作符
逻辑与(&&) 逻辑或(||)
&&:如果前面为假,则不计算后面
||:如果前面为真,则不计算后面
8.条件操作符
exp1 ? exp2 :exp3
9.逗号表达式
exp1,exp2 … expN
逗号表达式,从左至右依次执行,整个表达式的结果是最后一个表达式的结果。
10.下标引用、函数调用和结构成员
[]:数组中使用
():函数调用操作符
-> 或 . :访问结构体成员

C语言重要知识点总结(二)–内存结构、函数调用过程(栈帧)、宏的优缺点以及##和#的使用
C语言重要知识点总结(三)–const、volatile、extern、static、restrict、register关键字解析
C语言重要知识点总结(四)–结构体、结构体内存对齐、位段、枚举、联合
以上总结如有不足之处,希望指出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值