【C语言深度剖析——第三节(关键字3)】《C语言深度解剖》+蛋哥分析+个人理解

本文主要是介绍【C语言深度剖析——第三节(关键字3)】《C语言深度解剖》+蛋哥分析+个人理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文由@睡觉待开机原创,未经允许不得转载。
本内容在csdn网站首发
欢迎各位点赞—评论—收藏
如果存在不足之处请评论留言,共同进步!

目录

  • 1.基本数据类型
  • 2.sizeof关键字

前言:
本期我们继续探讨关于C深度解剖这本书相关内容,继上一篇博客,本篇博客来围绕“数据类型”、“原反补”有关话题进行探讨。

1.基本数据类型

为什么需要开辟类型?
是为了满足不同的计算场景,让我们合理的使用空间。之所以C语言要造这么多类型,其实就是为了适用不同的应用场景而已,不同的应用场景需要空间内存大小也是不同的。用最小的成本解决各种各样多样化场景问题。
下面是C语言中各种类型的一个分类:
在这里插入图片描述
数据类型与模子:我们计算机内存是一块很大的空间,有些人可能想说,我不用借助类型创建变量,直接把数据放到内存中存储不就行了吗?更省力。其实不然,单纯的数据是没有意义的,比如我告诉你我身上有100,然后你可能会想到我身上有100块钱,那我还说我身上有100张A4纸呢,也就是说数据没有类型是没有意义的。 在C语言中,类型正是起到了一个单位的角色,让没有意义的数据变得有意义起来。

然后我想分享一些关于创建变量标识符的规则,如果胡乱命名标识符的话,就相当不利于日后代码的维护和协作性。

命名规则:
1.要用英文,禁用汉语、拼音
2.最短长度,最大信息
3.大驼峰命名,首字母大写
4.尽量不要出现数字编号
5.程序中不得出现仅靠大小写区分的标识符
6.一个函数名禁用给变量名
7.所有宏定义、枚举、只读变量统一用大写来定义
8.一般而言,用i、j、k作为循环变量
9.结构体被定义时候要有明确的结构体名称

2.sizeof关键字

在解说sizeof之前,首先要明确sizeof是一个关键字,不是函数!!!

为了证明sizeof不是函数,下面通过几种方法来进行证明:

方法一:编译器来决定
在这里插入图片描述
编译器在没有括号的情况下依然可以编译,通常函数调用需要带有小括号。

方法二:反汇编没有压栈过程,函数需要压栈
在这里插入图片描述
方法三:sizeof括号内的代码不会被真正执行
在这里插入图片描述
之后,我需要来强调一下sizeof括号内的代码不会被执行这个注意事项, 实际上,在C语言C90标准中,sizeof括号内的代码不会被执行,但是到了C99标准,标准又规定会执行,也就是说会不会执行完全看编译器遵循哪一套C标准,因而在sizeof里不要使用带有副作用的代码,比如上面方法三示例。

二进制与十进制的快速转换问题:
很多同学可能感觉比较小的数字转换二进制的麻烦,这里有个比较好的方法:
在这里插入图片描述
比如67=64+3=64+2+1,这样写出来之后我们都知道2的6次方是64,2的1次方是2,2的0次方是1,然后其他位置全部写0就好啦。
在这里插入图片描述

这篇关于【C语言深度剖析——第三节(关键字3)】《C语言深度解剖》+蛋哥分析+个人理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/620684

相关文章

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程