C规范编辑笔记(六)

news2024/10/5 13:07:36

往期文章:

C规范编辑笔记(一)
C规范编辑笔记(二)
C规范编辑笔记(三)
C规范编辑笔记(四)
C规范编辑笔记(五)

正文:

今天我们继续来分享一下我们C规范编辑笔记第六篇~
话不多说,我们直接来看:

1、 结构体变量不得在未指定初始化值的情况下进行初始化,并且必须初始化结构变量的每个字段/元素。

*每个元素都必须使用明确的标识进行初始化,没有多余的初始化值。或者,可以在声明中使用 {0} 初始值设定项。这里举例两个例子来进行对比:

先看不好的例子

Bad example:
int32_t y[5] = {1, 2, 3}; /* 此处的初始化具有误导性——实际上,最后两个元素初始化为零 */
int32_t z[2] = {1, 2, 3}; /* 多初始化一个值 */
int16_t vv[5] = { [0] = -2, [1] = -9, [3] = -8, [2] = 18 }; /* s错误来源,索引 2 和 3 不是按递增顺序排列的,而 4 被遗忘了 */
struct person {
unsigned char name[20];
uint16_t roll;
float marks;
int grades[10];
};
struct person p1 = {" ", 0}; /* 模糊定义 */
struct person p2 = {"toto" ,67 ,78.3 ,{0} ,12}; /* 12为多初始化的一个变量 */

好的例子

Good example:
int32_t y[5] = { 1, 2, 3, 4, 5 }; 
int32_t z[2] = { 1, 2 }; 
int32_t w[3] = { 0 }; 
/* 以下这种索引值初始化可能比较少见*/
int16_t vv[5] = { [0] = -2, [1] = -9, [2] = 18, [3] = -8, [4] = 33 }; /* ok */
struct person {
unsigned char name[20];
uint16_t roll;
float marks;
int grades[10];
};
//结构体这种初始化可以参考一下
struct person p1 = { .name = "titi", .roll = 12, .marks = 10.0f, .note = {0}};
struct person p2 = { .name="toto", .roll=67, .marks=78.3 , .grades={0}}; 

2、C 标准没有为每种类型的整数定义明确的大小。特别是对于int类型,根据架构的不同,可以是16位、32位或64位。

3、普通的 char 类型不应该用于数值,因为它的符号不是由 C 标准指定的,而是由实现定义的。此类型必须仅限于字符处理。

*规则 — 只有 signed char 和 unsigned char 类型必须用于处理数值,因此使用char类型处理整数需要前面加上有无符号。

4、 建议——不要重新定义类型别名,比如:
不好的多次定义一个类型别名

Bad example:
/* 这里重复对unsiged short类型进行重定义*/
typedef unsigned short uint16_t;
typedef unsigned short uint16_type; 
typedef uint16_t unsigned_short; 

好的定义:

Good example:
typedef unsigned short uint16_t;

好了,今天我们就先分享到这里~
我们C规范编辑笔记第七篇见~

在这里插入图片描述

本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云大数据BI 为中小型企业智慧运营保驾护航

华为云大数据BI 为中小型企业智慧运营保驾护航 企业数字化转型中,必然面临信息数据潜在价值变现的问题,在解决这一问题的途中,企业可能面临多种困难,尤其是信息数据分析,这直接关系到企业能否实现潜在价值变现。对于小…

[附源码]Python计算机毕业设计Django疫情管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

chrome新特性-recorder

chrome新特性-recorder一、简介二、录制三、录制回放1.Chrome DevTool工具2.Puppeteer脚本(1) 介绍(2) 使用一、简介 recorder 与Selenium IDE浏览器插件类似,可用于自动化测试及脚本生成(Puppeteer脚本);前者为Web自动化测试框架Selenium的配套浏览器插件支持Java、…

一文学会所有Web应用安全知识点

据调查大部分网络安全事故是软件缺陷导致的网络攻击。由于应用程序代码漏洞和安全漏洞,我们的企业正在遭受越来越多的攻击。调查显示攻击者可以通过盗用凭证,攻击10个测试过的web应用程序中的9个,进行恶意软件注入以及网络钓鱼攻击。因此&…

QuTrunk与MindSpore量子神经网络初探

QuTrunk是启科量子开发和已经开源的一款量子编程框架软件产品,关于QuTrunk的详细介绍,用户可以访问启科的开发者社区站点详细了解,也可以进入github上此项目下进行查询。 QuTrunk开发框架是可以与第三方AI框架深度结合进行量子计算程序开发的…

安装 Unity 个人免费版

安装 Unity 个人免费版 正版是需要收费的,所以我们个人开发使用个人免费版就可以 一、下载Unity 1.打开unity官网 点击”下载Unity" 官网 https://unity.cn/releases 2.下拉,会有各种版本,进入Unity的下载页面,找到对应的版…

Nacos2.1.2+Seata1.5.2+Mysql8+SpringCloud+Feign实现分布式事务笔记

搭建环境可以使用docker或是手动自己构建 1.启动nacos服务,nacos/nacos登录http://nacos-ip:8848 2.修改Seata的配置文件,注册到nacos上: seata\conf\application.yml server:port: 7091spring:application:name: seata-serverlogging:con…

VS调试安卓Unity应用

最近遇到了一个bug,需要在安卓手机上实机调试才行,所以这里记录一下怎么用VS调试安卓应用。我使用的VS是2017,但是更新的2019等版本应该也是差不多的(毕竟实际上依赖的是Visual Studio Tools for Unity插件)。Unity版本…

管理RMAN备份_管理恢复目录(Recovery Catalog)

本章阐述如何管理RMAN恢复目录。Catalog是一个数据库模式,它包含一个或多个目标数据库的RMAN仓库数据。 1.RMAN恢复目录概述 本节阐述与管理恢复目录相关的基本概念。 1.1.RMAN恢复目录的目的 恢复目录是一个数据库模式,RMAN使…

OutOfMemory内存溢出问题排查

OutOfMemory内存溢出问题排查 错误 2022-12-06 00:43:53.296[,] [registrationTask1] ERROR o.s.s.support.TaskUtils$LoggingErrorHandler.handleError96 - Unexpected error occurred in scheduled task. java.lang.OutOfMemoryError: Java heap space 2022-12-06 00:42:49.…

密码技术学习一:密码

0、前言 本文是作者阅读《图解密码技术》时,学习总结的一些知识,在此推荐想要深入学习密码知识的同志,将此书作为入门书来看还是比较适合的。 1、密码技术简介 1.1加密与解密 在两者通信过程中,不想通信的内容被第三方知道&am…

在R语言中进行缺失值填充:估算缺失值

介绍 缺失值被认为是预测建模的首要障碍。因此,掌握克服这些问题的方法很重要。最近我们被客户要求撰写关于缺失值处理的研究报告,包括一些图形和统计输出。 估算缺失值的方法的选择在很大程度上影响了模型的预测能力。在大多数统计分析方法中&#xf…

有状态软件如何在 k8s 上快速扩容甚至自动扩容

概述 在传统的虚机/物理机环境里, 如果我们想要对一个有状态应用扩容, 我们需要做哪些步骤? 申请虚机/物理机安装依赖下载安装包按规范配置主机名, hosts配置网络: 包括域名, DNS, 虚 ip, 防火墙...配置监控 今天虚机环境上出现了问题, 是因为 RabbitMQ 资源不足. 手动扩容…

一夜之间火爆GitHub的JavaWeb轻量级开发面试教程,终于浮出水面

前言 学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。 学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生…

[附源码]Python计算机毕业设计Django医院门诊管理信息系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

React组件通信

react因为组件化,使得组件间通信十分的重要。本文就来简单介绍一些常见的react组件间传递的内容。 我将归纳为以下几种关系来详述:父组件与子组件之间,子组件与父组件之间,发布者与订阅者模式(context),兄弟…

Netty入门——基于NIO实现机器客服案例

Netty简单案例前言环境准备前置知识网络传输的几种实现方式BIO——同步阻塞IONIO——同步非阻塞IOAIO——异步非阻塞IO适用范围Netty简介特点核心组件使用场景运行简图案例简介关键代码客户端服务器端运行状况总结前言 最近学完了Netty,在这里关于Netty中实现NIO做…

【Shell 脚本速成】09、Shell 循环控制语句 for

目录 一、循环控制 break 语句 二、循环控制 continue 语句 三、循环控制 sleep 四、参数控制命令-shift 五、脚本退出命令 exit 总结 六、for 嵌套 6.1 for 嵌套 if 七、for 与数组 7.1 使用 for 循环遍历读出数组 7.2 使用 for 循环进行数组存值 一、循环控制 bre…

Zabbix6.0使用教程 (一)—zabbix新增功能介绍2

上一篇我们已经介绍了部分zabbix6.0的新增功能,这期我们将继续为家详细介绍下余下的zabbix6.0新增功能,大家可以往下看。 六、监控项 6.1 自动类型选择 监控项配置表单会自动建议匹配的信息类型,如果选定的监控项键值仅返回特定类型的数据…

迷宫逃离的问题-CoCube

ROS1云课→20迷宫不惑之A*大法(一种虽古老但实用全局路径规划算法) 将CoCube分别放入如下地图中的左侧,如何从右侧逃离: 需要算法:求解起点到终点的路径。 还需要什么? 参考: (eng.…