【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就好啦。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/241041.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java爬虫爬取图片壁纸

Java爬虫 以sougou图片为例:https://pic.sogou.com/ JDK17、SpringBoot3.2.X、hutool5.8.24实现Java爬虫,爬取页面图片 项目介绍 开发工具:IDEA2023.2.5 JDK:Java17 SpringBoot:3.2.x 通过 SpringBoot 快速构建开发环境…

IT大侦“碳”:Concept Luna向循环设计持续演进

IT大侦“碳”:Concept Luna向循环设计持续演进

代码、课程、教学的一些思考-2024

1 代码、算法、艺术品 1.1 代码 最典型的C代码示例。 以下是一个简单的C代码示例&#xff0c;它打印出“Hello, World!”&#xff1a; #include <iostream> int main() { std::cout << "Hello, World!"; return 0; } 这段代码定义了一个程序&a…

C#winform上位机开发学习笔记1-串口助手的ModbusCRC功能

1.首先自定义CRC校验函数 private UInt16 Crc_Check(byte[] Data, byte DataLEN){UInt16 CRC 0xFFFF;for (byte i 0; i < DataLEN; i){ CRC ^ Data[i];for(byte j 0; j < 8; j){if((CRC & 0x0001) 0x0001){CRC (UInt16)((CRC >> 1) ^ 0xA001);}else{CRC …

DDoS攻击规模最大的一次

有史以来DDoS攻击规模最大的是哪一次&#xff1f; Google Cloud团队在2017年9月披露了一次此前未公开的DDoS攻击&#xff0c;其流量达 2.54Tbps&#xff0c;是迄今为止有记录以来最大的DDoS攻击。 在同时发布的另一份报告中&#xff0c;分析高端威胁团体的谷歌安全团队谷歌威胁…

Vray渲染效果图材质参数设置

渲染是创造出引人入胜视觉效果的关键步骤&#xff0c;在视觉艺术领域尤为重要。不过&#xff0c;渲染作为一个资源密集型的过程&#xff0c;每当面对它时&#xff0c;我们往往都会遭遇到时间消耗和资源利用的巨大挑战。幸运的是&#xff0c;有几种方法能够帮助我们优化渲染&…

网易云音乐 API

网易云音乐 API 网易云音乐 API灵感来自环境要求安装运行Vercel 部署操作方法 可以在Node.js调用支持 TypeScript使用文档功能特性更新日志单元测试SDK贡献者License 网易云音乐 API 网易云音乐 Node.js API service 灵感来自 disoul/electron-cloud-music darknessomi/musi…

Jira 宣布Data Center版涨价5%-15%,6年内第8次提价

近日&#xff0c;Atlassian官方面向合作伙伴发布2024年涨价通知&#xff1a; 自2024年2月15日起&#xff0c;旗下核心产品Jira Software、Confluence、Jira Service Management的DC版本&#xff08;Data Center版本&#xff09;价格提高5%-15%&#xff08;涨幅与坐席数阶梯相关…

【算法】串联所有单词的子串【滑动窗口】

题目 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。例如&#xff0c;如果 words ["ab","cd","ef"]&#xff0c; 那么 "abcd…

[NSSRound#16 Basic]RCE但是没有完全RCE

题目代码&#xff1a; <?php error_reporting(0); highlight_file(__file__); include(level2.php); if (isset($_GET[md5_1]) && isset($_GET[md5_2])) {if ((string)$_GET[md5_1] ! (string)$_GET[md5_2] && md5($_GET[md5_1]) md5($_GET[md5_2])) {i…

微店商品详情API(micro.item_get)的数据分析和挖掘

随着电商行业的迅猛发展&#xff0c;微店作为电商平台的重要组成部分&#xff0c;提供了丰富的API接口供开发者使用。其中&#xff0c;微店商品详情API&#xff08;micro.item_get&#xff09;是用于获取商品详情的接口&#xff0c;为数据分析和挖掘提供了大量有价值的数据源。…

Kafka-消费者-KafkaConsumer分析

与KafkaProducer不同的是&#xff0c;KafkaConsumer不是一个线程安全的类。 为了便于分析&#xff0c;我们认为下面介绍的所有操作都是在同一线程中完成的&#xff0c;所以不需要考虑锁的问题。 这种设计将实现多线程处理消息的逻辑转移到了调用KafkaConsumer的代码中&#x…

HTML 表单

文章目录 表单什么是表单GET和POST两种提交方式有什么不同?表单元素表单项外文本单行文本输入框单行文本密码框单选框复选框下拉列表框上传文件隐藏域填写邮箱填写电话填写数字填写日期进度条多行文本输入框提交按钮取消按钮 用户注册案例 表单 什么是表单 form:表单元素 此…

navigateTo失效-跳转不了页面解决办法!uniapp\vue

改了一个小时多的错误&#xff0c;跳转页面无论怎么样都跳转不了&#xff0c;有2个问题&#xff1a; 注意&#xff1a;uniapp的报错可以在console里检查&#xff01; 1.pages.json文件没有配置路径&#xff0c; 在pages:[ ]里面加 &#xff08;根据自己的路径进行修改 {&qu…

Python爬虫---scrapy框架---当当网管道封装

项目结构&#xff1a; dang.py文件&#xff1a;自己创建&#xff0c;实现爬虫核心功能的文件 import scrapy from scrapy_dangdang_20240113.items import ScrapyDangdang20240113Itemclass DangSpider(scrapy.Spider):name "dang" # 名字# 如果是多页下载的话, …

Byrdhouse AI实时语音翻译工具,可以在视频通话中翻译100多种语言

你是否曾经在跨国会议或与外国友人聊天时&#xff0c;因为语言不通而感到尴尬或困扰&#xff1f;是不是还在找可以实时翻译的软件或者APP&#xff1f;现在&#xff0c;有了这款语音翻译神器&#xff0c;一切都将变得简单&#xff01; 免费使用链接&#xff1a;https://byrdhous…

2809. 使数组和小于等于 x 的最少时间

2809. 使数组和小于等于 x 的最少时间 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/minimum-time-to-make-array-sum-at-most-x/?envTypedaily-question&envId2024-01-19 经典动态规划 class Solution { public:int minimumTime(vector<int&…

合并K个升序链表(LeetCode 23)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一&#xff1a;顺序合并方法二&#xff1a;分治合并方法三&#xff1a;使用优先队列合并 参考文献 1.问题描述 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff…

uniapp踩坑之项目:canvas第一次保存是空白图片

在ctx.draw()回调生成图片&#xff0c;参考canvasToTempFilePath接口文档 // data imgFilePath: null,// 缓存二维码图片canvas路径//js // 首先在draw&#xff08;&#xff09;里进行本地存储 ...... ctx.draw(false, () >{uni.canvasToTempFilePath({ // 把画布转化成临时…

c JPEG 1D DCT

步骤&#xff1a; 1. 对yuv 88 数据 8行分别1D DCT 2, 用8行 1D DCT 得到的数据生成中间88 块 Zj 3,对Zj 的8列再 1D DCT 后生成8列,用这8列组合成8*8的2D DCT 系数 准备用此1D DCT程序代替以前写的2D DCT,看能减少多少编码时间。 看网上文章&#xff0c;ffmpeg用…