第二章 c语言结构数据类型关键字

如何产生ATPG IR-drop分析波形文件(DFT) 摘要:本文介绍了生成VCD波形的流程与要求,主要用于后端进行IR-drop分析。生成过程分为ATPG shift和speed ATPG capture两部分,分别对应不同的输入要求、模式设置和仿真参数。 阅读详情

一、c语言的结构

1、程序

一个程序由一个或者多个源程序文件组成

2、源文件

  1. 预处理指令
  2. 全局申明
  3. 函数定义

3、函数

函数是c语言的重要组成部分
一个c语言程序是由一个或者多个函数组成的,其中必须包含并且只能有一个main函数。

1、函数首部:也就是函数的第一行
int max(int x, int y)
如果没有参数,可以写void或者空
2、函数体:
最外层花括号{}是函数体的范围。

  1. 申明部分 变量的定义
  2. 执行部分 函数中所进行的操作

可以是一个空函数,没申明部分,也没执行部分。

二、c语言的运行过程

编辑->编译->连接->执行

编译:

1、预编译
将.c中的头文件展开、宏展开
gcc -E a.c -o a.i
生成的文件时.i文件
2、编译
将预处理后的.i文件生.s汇编文件
gcc -S a.i -o a.s
3、汇编
将.s汇编文件生成.o目标文件
gcc -c a.s -o a.so

预处理

include

#include<>用<>包含的头文件,在系统指定的路径下找头文件。
#inlcude “” 用“”包含的头文件,现在当前目录下找头文件,找不到再到系统指定路径下找。

注意:此阶段不进行语法检查。

define

定义宏用define。
宏时在预编译的时候进行替换。
作用范围:从定义开始到文件末尾,或者#undef结束的时候。

1、不带参宏

#defind PI 3.14
在预编译的时候,如果代码中所有使用了PI的地方,就用3.14取替换。
好处:只要修改宏i你的定义,代码中的所有地方都被替换。
#undef PI 宏定义作用范围终止

2、带参宏

#define S(a,b) a*b

S(1,2) => 1*2;
S(1+2, 3) => 1+2*3;

选择性编译

1、#ifdef #else #endif

//如果定义过宏NUM,就执行片段1,否则片段2
#ifdef NUM
...
#else
...
#endif

2、#ifndef #else #endif

和第一个相反

3、#if #else #endif

//1为真,则执行1,如果写成#if 0.0为假,执行2
#if 1
//代码块1
#else
//2
#endif

三、数据类型

在这里插入图片描述
基本类型和枚举类型变量的值都是数值,统称为算数类型。
算数类型和指针类型统称为纯量类型。
数组类型和结构题类型统称为组合类型。
若干个相同或者不同类型的数据构成的集合,称为构造类型

3.1、整型数据

0开头表示八进制。
0x开头表示16进制。

3.1.1、int

32位系统下4个字节,16位系统占用2个字节。由编译系统决定。
存储方式:用整数的补码形式存放。
正数的补码:数的二进制形式
负数的补码:负数绝对值的二进制形式,然后取反,再加1
在这里插入图片描述

3.1.2、short int (short)

int位4字节,short int位2字节

3.1.3、long int (long)

int位4字节,long int位4字节

3.1.4、long long int (long long)

int位4字节,long int位8字节
在这里插入图片描述

3.2 字符类型

字符是按其代码(整数)形式存储的。
A=65
a = 97
在这里插入图片描述

3.3 浮点类型

c语言中,实数是以指数形式存储的。
123e3表示12310^3
123e-3表示123
10^-3
默认为double类型,f结尾的是float类型(12.3f)
在这里插入图片描述

3.4、类型转换

3.4.1 加减乘除

1、加减乘除中两个数有一个位float或double类型,结果都是double。
2、int与float或者double类型运算,先把int类型和float转为double,然后再运算。
3、字符(char)型数据与整型数据运算,就是把ASCII代码与整型数据运算。
4、当表达式中有有符号数,也有无符号数,都会变成无符号数参加运算,结果也是无符号数。

3.4.2 强制类型转换

(double) a 将a转换为double类型
(int)(x+y) 将x+y的值转换为int类型

3.4.3 自动转换

占用内存字数的小的类型向占用内存字节数多的类型自动转换,保证精度不降低。

3.4.5 赋值语句

赋值语句中,等号右边自动转换为等号左边的类型。

四、格式化输出字符

%d 十进制有符号整数
%x 16进制表示的整数
%f float类型浮点数
%e 指数形式浮点数
%s 字符串
%p 指针的zhi
%u 十进制无符号整数
%o 八进制表示的整数
%lf double类型浮点数
%c 单个字符

特殊用法:
%3d 不足3位, 前面用空格补齐
%03d 不足3位,前面用0补齐
%-3d 不足三位,后面用空格补齐
%5.2f 一共5位,小数点后面只保留2位,整数位不足用空格补齐,小数位用0

五、存储相关关键字

register、static、const、auto、extern

5.1 register

寄存器的意思,用register修饰的变量是寄存器变量。
即:再编译的时候告诉编译器这个变量是寄存器变量,尽量将其存储空间分配在寄存器中。

1、定义的变量不一定真的存放在寄存器中。
2、cpu取数据的时候去寄存器中拿数据比内存中拿数据快。
3、因为寄存器比较宝贵,不能定义寄存器数组。
4、register只能修饰字符型和整型,不能修饰浮点型。
5、因为register修饰的变量可能存放在寄存器中,所以不能对寄存器变量取地址。
register int a;
int *p;
p = &a;//错误的。a可能没有地址。

5.2 static

static可以修饰全局变量、局部变量、函数

5.3 const

const是常量的意思,用const修饰的变量是只读的,不能修改他的值。
const可以修饰指针。

5.4 auto

auto int a 和 int a是等价的,现在基本不用

5.5 extern

是外部的意思。一般用于函数或全局变量的声明。

六、其他关键字

sizeof typedef volatile

6.1 sizeof

用来测变量、数组的占用存储空间的大小。

6.2 typedef

重命名,作用是给一个已有的类型重新起个类型名。
typedef int INT16;
INT16 a;等价于int a;

6.3 volatile

cpu使用volatile变量的时候,重新去内存中取,保证用的是最新的值。

命名规则:c语言中标识符由字母数字和下划线构成。且只能以字母或吓坏西安开头。

软件产品国际化:前后端及App多语言版本解决方案(超详细实现过程) 多语言版本解决方案是应对全球化趋势的关键策略,它通过构建灵活且可扩展的架构,支持软件产品在不同语言和文化环境下的顺畅运行与展示。此方案涵盖了前端多语言界面实现、后端多语言数据处理及大数据环境下的多语言支持等多个层面,确保公司能够高效地推出适应全球用户多样化需求的软件产品。在前端多语言界面实现方面,解决方案采用了国际化与本地化的结合方法。国际化过程确保软件的功能和代码设计能够处理多种语言和文化习惯,而本地化则针对特定地区进行界面和内容的调整。 阅读详情

相关推荐

电流互感器的使用分析

有关电流互感器使用的注意事项,回头再看,耳目一新。

qq_46757048的博客 2万+

C语言学习笔记:函数

函数别称方法、子例程或程序。每个C程序都至少有一个函数,即主函数 main();使用一个函数需要进行函数声明、函数定义、调用函数。函数声明提供了函数的名称、返回类型和参数。函数声明:函数类型 函数名(形参);函数定义提供了函数的实际主体。函数定义:函数首部、函数体函数首部:函数类型 函数名(形参)函数调用:通过调用函数来完成已定义的任务。函数调用:函数名(实参);

WHNWZY的博客 2667

SolidWorks与Python二次开发实战:从宏录制到自动化脚本

本文详细介绍了利用Python对SolidWorks进行二次开发的实战方法。通过宏录制获取操作指令,再将其转换为Python脚本,工程师可以高效实现建模、出图等重复任务的自动化,显著提升设计效率。文章涵盖了环境搭建、代码转换、调试技巧及完整实战案例,为工程师提供了从入门到精通的完整路径。

weixin_29082143的博客 944

C语言_函数首部

函数首部包括函数的类型名、函数名和形参列表 int fun(int a, int b) // 函数首部 // { }中的内容就是函数体 { return a>b ? a : b; // 函数返回值 }

aiqq136的博客 7132

从JT808/JT1078协议到多端协同:构建高并发北斗车辆监控平台的技术实践

本文详细介绍了基于JT808/JT1078协议构建高并发北斗车辆监控平台的技术实践,包括协议解析、高并发架构设计、多端协同实现及数据持久化策略。通过Netty、Kafka等技术优化,系统成功支撑日均2000万条消息处理,为GPS车辆动态监控系统提供了可靠解决方案。

weixin_28358083的博客 224

echarts 生成中国陕西省份(或其他省份)的地图,大屏使用

效果图: 一、首先第一步需要下载echarts和获取到陕西身份的地图信息。 1.下载echarts链接(官网): Apache ECharts 2.生成指定省份的地图数据信息,数据可以在阿里云获取。 DataV.GeoAtlas地理小工具系列 如图,点击左圈需要的省份,这里我选择的是陕西省,然后点击右圈复制下载链接,得到一个json格式的数据,可以在json转换网站转成js格式。 Json在线解析格式化-Json在线校验Json格式化压缩-Jsons在线工具 转成js格.

PrimaryColor 3889

【C语言基础知识06】函数知识点阐述

本文大纲:

网络工程 3361

Ecg信号QRS波峰检测:A Real-Time QRS Detection Algorithm (Pan-Tompkins法)

Pan-Tompkins法是R峰检测的经典方法,被引量高达6000+次。 Pan J, Tompkins W J. A real-time QRS detection algorithm[J]. IEEE transactions on biomedical engineering, 1985 (3): 230-236. 本文对论文流程进行了总结,并参考BioSigKit项目,复现了论文代码。 流程图: 代码如下: 第一部分是信号读入,这里使用MIT_BIH信号的100,读入10000个数据点 第二部分

weixin_42870380的博客 1万+

数据结构与算法(16)

查找 查找的基本概念 1.查找表 查找表是由同一类型的数据元素(或记录)构成的集合。由于“集合”中的数据元素之间存在着完全松散的关系,因此查找表是一种非常灵便的数据结构,可以利用其他的数据结构来实现,比如本章将要介绍的线性表、树表及散列表等。 2.关键字 关键字是数据元素(或记录)中某个数据项的值,用它可以标识一个数据元素(或记录)。若此关键字可以唯一地标识一个记录,则称此关键字为主关键字(对不同的记录,其主关键字均不同)。反之,称用以识别若干记录的关键字为次关键字。当数据元素只有一个数据项时,其关

weixin_61961720的博客 1923

Lane、PHY和Preset Value Bit

每个Lane支持不同的传输速度和带宽,例如PCIe 3.0中,一个Lane的传输速度可以达到8 GT/s(Giga Transfers per second),也就是1 GB/s(GigaBytes per second)。Preset Value Bit(预置值位)是在PCIe 3.0的Lane上新引入的一种机制,用于优化信号传输质量。PCIe设备可以包含多个Lane,例如x1、x4、x8、x16等,表示该设备同时使用的Lane数目,比如x16表示该设备采用了16个Lane,具有更高的传输速度和带宽。

weixin_58083606的博客 1295

RV1126双摄IMX577驱动移植避坑:从RK3588到RV1126的dts配置与内存崩溃解决实录

本文详细记录了在RV1126平台上移植RK3588的IMX577双摄驱动的完整过程,重点解决了dts配置与内存崩溃问题。通过分析硬件架构差异、驱动移植关键点及CMA内存越界问题,提供了两种有效解决方案,并分享了双摄同步优化与网络调试的实战经验,为嵌入式视觉系统开发提供实用参考。

weixin_42641741的博客 404

数据结构--查找

参考青岛大学–王卓老师 一、查找的基本概念 查找表:是由同一类型的数据元素(或者记录)构成的集合。 主关键字:可唯一标识一个记录的关键字是主关键字。 次关键字:用以识别若干记录的关键字成为次关键字。 查找表分为:静态查找表、动态查找表。 平均查找长度(ASL):关键字的平均比较次数。 二、线性表的查找 1.顺序查找 静态查找表,表内的元素是无序的 改进: 将key作为监视哨放在头部,当数组较长的时候,能够使进行一次的查找所需的平均时间几乎减少一半。平均查找长度(n+1)/2 2.折半查找(二分或者对分查

weixin_45638522的博客 1358

CANoe-vTESTstudio之Test Diagram编辑器

总之,CANoe-vTESTstudio的Test Diagram编辑器提供了一个直观且强大的工具,用于创建和管理测试用例。通过图形化的界面和丰富的功能,测试工程师可以更轻松地编写复杂的测试脚本,并有效地进行测试开发。在上面的示例中,我们创建了一个名为"MyTestCase"的测试用例,并定义了两个测试步骤"Step1"和"Step2"。在上面的示例中,我们在执行"Step1"之后使用条件语句来确定是否执行"Step2"。在每次迭代中,我们创建一个新的测试步骤,并根据迭代次数动态生成相应的日志和验证消息。

TcData的博客 248

002Karel 第二章 语言元素

关于常量,变量,结构体的定义

qq_45060045的博客 2092

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

数据库第二章

 又称逻辑数据模型(Logical Data Model),是用户从数据库中所看到的数据模型,是具体的DBMS所支持的数据模型,如网状数据模型、层次数据模型、关系数据模型和面向对象数据模型等。 即新一代数据库技术,它是以面向对象模型为主要特征的数据库技术。 是对现实世界客观事物的数据抽象描述,这种抽象描述能确切的反映事物、事物的特征和事物之间的联系,形成一组严格定义的概念的集合。 ⑥ 外键(Forgien Key):在一个关系中含有的与另一个关系的关键字相对应的属性(组)称为该关系的外部关键字。

m0_73943958的博客 1728

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

万字解析:从 C 语言到初阶数据结构

《万字解析:从 C 语言到初阶数据结构》是一篇面向零基础学习者的综合性编程入门教程,系统介绍了C语言基础与初阶数据结构知识。文章从C语言的历史与环境搭建开始,逐步讲解变量、流程控制、函数、数组、指针、结构体及文件操作,每节配有详细文字说明、规范代码和注释,确保易于理解。进一步引入链表、栈、队列等数据结构,结合算法竞赛案例(如括号匹配、台阶问题)展示其实用性。通过多个实战项目(如猜数字游戏、计算器、图书馆管理系统),帮助初学者将理论应用于实践。

2301_79411237的博客 716

【C语言网络编程进阶】:掌握POST请求解析的5个关键步骤与常见陷阱

掌握C语言HTTP服务器的POST请求解析,解决自定义Web服务数据接收难题。涵盖请求头解析、缓冲区管理、内容长度处理、编码识别与内存安全等关键步骤,适用于嵌入式服务器开发。规避常见陷阱,提升稳定性与性能表现,值得收藏。

BytePerch的博客 803

java怎么表示正无穷大_读《Java核心技术》---程序设计结构(数据类型、变量、运算符)...

刚好廖雪峰的Java教程还在更新当中,知乎上看了一些提问,大家都推荐这本书。先看看如何。下载个第十版看看,(搜索的时候尽量把书名号加上并且加上精确的文字,不然搜索出来的会是第七版什么的)在强化基础的角度来看,大家比较推荐看1-6章节,我的计划是看1-6 或者1-9章节, 剩下的不是很必要。第一章 Java程序设计概述介绍了Java程序设计平台(也就是语言本身的情况)、java的关键术语(简单性,面...

weixin_29920697的博客 168

c#面向对象与程序设计第三版第三章例题代码_读《Java核心技术》---程序设计结构(数据类型、变量、运算符)...

刚好廖雪峰的Java教程还在更新当中,知乎上看了一些提问,大家都推荐这本书。先看看如何。下载个第十版看看,(搜索的时候尽量把书名号加上并且加上精确的文字,不然搜索出来的会是第七版什么的)在强化基础的角度来看,大家比较推荐看1-6章节,我的计划是看1-6 或者1-9章节, 剩下的不是很必要。第一章 Java程序设计概述介绍了Java程序设计平台(也就是语言本身的情况)、java的关键术语(简单性,面...

weixin_39640372的博客 158

数据库原理题型 - 填空题

填空题 A组 1、模式/内模式映象为数据库提供了数据的物理 独立性。 2、关系中主码的取值必须唯一且非空,这条规则是实体完整性规则。 3、数据库设计分为六个阶段分别是:需求分析、 概念结构设计、 逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护。 4、事务具有四个特性,分别为:原子性、一致性 、隔离性 和持久性。 5、在关系数据库中,任何不含多值依赖的二元关系模式的最高范式必是 BC范式。 属性的取值范围称为该属性的域 。 E-R模型是数据库的概念设计阶段的一个有力工具。 现实世界

Touale的博客 3207

Open-AutoGLM单据提交倒计时:月底前必须掌握的5项提报技能

掌握Open-AutoGLM报销单据提交技巧,提升效率避免延误。本文详解月底提报必备的5项技能,覆盖常见场景、规范填写、自动校验等关键环节,确保快速审核通过。操作简单,系统兼容性强,值得收藏。

Algorhythm的博客 1006

C语言-函数(一):函数的定义和调用

函数(一)----- 函数的定义、调用及一些函数的例子

passxgx的博客 3万+

C语言基础——函数

C语言重要组成部分。本质是将一个语句块通过命名的方式独立出来。通过调用函数,可以实现对部分代码的反复使用,。函数类似于循环结构,可以节约大量代码。不同的是,函数在使用时不用被连续使用,而循环结构必须被连续使用。定义函数由函数首部与函数体组成。其中,函数首部由void、函数名和小括号组成;函数体由大括号和语句块组成。void函数名(){语句块;}由于函数名属于标识符,所以函数名必须符合标识符的命名规则。命名的函数名要有较好的可读性。

ld15353133609的博客 1万+

C语言学习笔记-程序结构

C语言学习笔记-程序结构

cuihwchn的博客 1540

第九章——函数

函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种。例如scanf()和printf()等为库函数,由C语言系统提供定义,编程时只要直接调用即可;库函数中没有的函数,用户可以自己来定义,来得到一个明确的计算结果,使得代码变得更简洁明了。函数定义的一般形式为:函数类型 函数名(形式参数表) /*函数首部*/函数实现过程 /*函数体*/

的博客 989

C语言入门

1.C语言特点 (1)语言简洁,紧凑,使用方便、灵活 (2)运算符丰富 (3)数据类型丰富 (4)具有结构化的控制语句 (5)语法限制不太严格 (6)C语言允许直接访问物理地址 (7)移植性好 (8)生成目标代码质量高,程序执行效率高 2.C语言程序的结构特点 (1)一个程序由一个或者多个源程序文件组成 (1)预处理指令 #include<stdio.h> //还有其他预处理指令,只是其中一个 (2)全局声明(在函数外面进行的数据声明) //放在mai

weixin_45460315的博客 429

C++语言 函数的定义与调用

函数定义由两部分组成:函数首部和函数操作描述。函数首部是函数的接口,包括函数名,函数的参数和返回值类型。函数操作描述由函数体的语句序列实现。 函数是程序代码的一个自包含单元,用于完成某一特定的任务。 有的函数完成某一操作; 有的函数计算出一个值。 通常,一个函数即能完成某一特定操作,又能计算数值。 为什么要定义函数 避免重复的编程。 使程序更加模块化,便于阅读、修改。 一个程序必须有且只有一个ma...

qgs1101的博客 2610
上一篇: 第一章 visual studio下载安装
下一篇: 第三章 C运算符和控制语句
七号公园的忧伤
七号公园的忧伤 新星创作者: Java技术领域 新星创作者: Java技术领域
博客等级 码龄6年 4857粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七号公园的忧伤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值