尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【C语言】c语言基础知识梳理(超全)

【C语言】c语言基础知识梳理(超全)
📅 发布时间:2026/6/25 14:28:10

C语言基础知识梳理

零、概述

一、变量和基本类型

(一)基本类型

1、有符号常见类型大小及其范围

2、浮点数范围来由及其有效数字

3、字面值常量

(1)十进制字面值

(2)浮点数字面值

(3)指定字面值类型

4、字符和字符串常量

5、总结

(二)变量

1、定义变量

2、常用特殊前缀

3、数组与初始化变量

4、变量作用域

(1)局部变量与全局变量的差别

(三)字符串

(四) 自定类型——结构体

二、表达式

三、语句

(一)条件语句

1、if语句

2、switch语句

(二)迭代语句

1、while语句

2、do while语句

3、for语句

(三)跳转语句

四、函数

(一)函数一般格式

(二)函数声明

(三)结构体中的函数

五、指针

(一)定义

(二)结构体与指针

(三)数组与指针

六、文件读取

(一)文本文件

(二)二进制文件

七、编译预处理指令与.h文件

(一)编译预处理指令

1、# include < stdio.h >

2、#define 名称 操作(宏定义)

3、(补充)inline内联函数

(二).h文件

(三)一些常用宏

八、常用函数

(一)常用函数

(二)scanf和printf

零、概述

写此篇博客的目的主要是为了梳理一下c语言基础知识,因为不会像c语言教程那样有很多例子,或者按照初学c语言的顺序,所以不推荐刚学习c语言的人阅读。(期末复习可以看看)

本篇文章有什么:

对c语言系统的梳理

对一些使用的细节进行梳理

解答对使用c语言时产生的一些疑惑

本篇内容基于“C语言程序设计-浙江大学-翁恺”、“C++ Primer”部分内容以及个人理解进行梳理,不充分之处欢迎指出

一、变量和基本类型

(一)基本类型

1、有符号常见类型大小及其范围

1byte(字节)=8bit(位);每个bit就是一个0或者1,byte是c语言里面数据的最小单位

常用2的次方:

27=128

28=256

215=32,768

216=65,536

231=2,147,483,648‬

232=4,294,967,296

263=9,223,372,036,854,775,808‬

264=18,446,744,073,709,551,616

类型 含义 32位编译器中大小(一般) 64位编译器中大小(一般) 最小值(32位) 最大值(32位)

bool(stdbool.h) 布尔类型 1byte 1byte false true

char 单个字符 1byte 1byte -27 27-1

short 短整形 2byte 2byte -215 215-1

int 整形 4byte 4byte -231 231-1

long 长整形 4byte 8byte -231 231-1

long long 长整形 8byte 8byte -263 263-1

float 单精度浮点数 4byte 4byte -2127 2128

double 双精度浮点数 8byte 8byte -21023 21024

long double 扩展精度浮点数 12byte 16byte -216383 216384

char* 字符常量或字符串常量 4byte 8byte 无意义 无意义

2、浮点数范围来由及其有效数字

这里单独讨论一下浮点数的取值范围,浮点数都遵循IEEE754标准,所以:

4*8=32位的float的第1位是符号位,第29位有8位是指数位,第1032位有23位是尾数位

那么可以很容易看到float的范围是[-12127≈1.71038, 12128≈3.41038]

因为转换成IEEE754都要进行标准化,也就是将原来的整数点整数的形式转化成二进制点二进制的形式,然后将点的位置移动到左边第一个1(2)之后,产生指数位。规定点之后的数填在尾数位上,所以31位前暗含了1(2),所以上面的范围会先乘个1。

32位的指数位 = 移位数(左移一位+1,右移一位-1)+ 127得出。所以负数只有127(127-127=0),而正数有128(127+128=255)

8*8=64位的double的第1位是符号位,第212位有11位是指数位,第1364位有52位是尾数位

那么可以很容易看到float的范围是[-121023≈8.98810307, 121024≈1.79769310308]

128=96或168=128位的long double的第1位是符号位,第216位有15位是指数位,在32位系统中第1796位有80位是尾数位,在64位系统中第17~128位有112位是尾数位,那么范围是[-1216383≈5.9104931, 1216384≈1.1897104932](与尾数大小无关)。

其实float的范围就已经非常非常大了,那为什么还会有double甚至long double呢,这是因为浮点数能准确记录量级,但是无法准确记录太长的数字,数字的有效位数值取决于尾数位的长度,我们可以总结成下表:

类型 有效位数计算 有效位数

float 223+1=16,777,216 8-1=7

double 252+1=9,007,199,254,740,992‬ 16-1=15

long double 280+1=2.410 24 / 2112+1=1.0381034 25-1=24 / 35-1=34

3、字面值常量

(1)十进制字面值

对于一个20(10)=24(8)=14(16),在c语言中对应表达为20(10进制)、024(8进制)、0x14(16进制)。

默认情况下,十进制字面值的类型是int,如果int装不下就是long,再装不下就是long long。

(2)浮点数字面值

对于一个浮点数可以表示为314.159(10)也可以表示为3.14159e+2(科学记数法)。

默认情况下,浮点数字面值是一个double

(3)指定字面值类型

整形字面值

后缀 最小匹配类型 例子

u / U unsigned 20u / 20U

l / L long 20l / 20L

ll / LL long long 20ll / 20LL

浮点形字面值

f / F float 20.0f / 20.0F

l / L long double 20.0l / 20.0L

4、字符和字符串常量

形如’a’、"HelloWorld"都可以看作是常量,特别说明当例如char* s1=“HelloWorld”;char* s2=“HelloWorld”;时,s1和s2所指的都是内存中代码段的常量,可读不可写且地址相同,类似于const char* s1;

字符是以单引号’括住的单个字符,只占一个char(一个byte)

字符串以双引号"括住一系列字符,最后隐含了’\0’,所以占n+1个char(n为字符串有意义的长度)

特殊的常量:无穷,每个编译器的表示都不一样,可以使用如下代码输出:

printf(“%f\n”, 1/0.0); // 无穷大。我的电脑上为:1.#INF00

printf(“%f\n”, -1/0.0); // 无穷小。我的电脑上为:1.#INF00

printf(“%f\n”, 0.0/0.0); // 空。我的电脑上为:-1.#IND00

5、总结

有符号的类型(除浮点数)的范围都是由[-2n-1, 2n-1-1](n为类型所占bit)

无符号的类型(除浮点数)的范围都是由[0, 2n-1](n为类型所占bit)

浮点数的范围与其指数位大小有关,为[-2{[2^(m-1)]-1}, 2[2^(m-1)]](m为指数位位数)

相关新闻

  • LSTM股票收益率预测实战:从数据清洗到模型部署
  • 用数据说话!2026年最流行AI论文软件榜单,免费款也能高效产初稿
  • Canonical Livepatch 正式拥抱 Arm64:ARM 服务器终于也能零停机打内核补丁了

最新新闻

  • Transformer做电池SOH估算:先别急,直接用反而最差
  • Zoo Text-to-CAD:用自然语言驱动机械设计革命
  • 手写一个基于Qt的轻量级示波器界面,附源码
  • SDKMAN CLI:用 Go 重写版本管理工具的探索
  • 博客系统接口需求分析:从模块拆解到自动化测试设计
  • 机器学习小数据训练实战:四维评估与高效落地方法

日新闻

  • 利用微PE工具箱进行系统安装教程
  • 渗透测试十大核心工具实战指南:从信息搜集到报告生成全流程解析
  • 暗黑破坏神2存档编辑器:网页版角色修改工具完全指南

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号