C语言 预处理器 注释 基本案例讲解

上文 程序设计语言与C语言发展
我们简述了 计算机语言的发展 以及编程语言与指令的概念
那么 今天 我们就来 初始C语言 并完成 第一个C语言案例

这里 我们需要完成 C语言 Hello World案例 以及 C语言程序举例

任何编程语言 开始的案例 都是 Hello World 所以说 Hello World 是程序员的初恋情人

C程序的创建 有四个基本过程 编辑 编译 链接 执行

编辑

在编辑器中书写逻辑代码
在这里插入图片描述
其中 以井号开头 语句 例如这里的 #include
被称作 预处理器指令

以.h 为后缀的文件被称为头文件,可以是C程序中现成的标准库文件,也可以是自定义的库文件。
这里的 stdio.h 文件中包含了有关输入输出语句的函数

main() 函数是 C 程序处理的起点 这个 学习了java的人应该会比较铭感
这个return语句结束main() 函数的执行并返回一个值,返回值为0表示程序正常结束

这对花括号 {} 内部就是函数的主体内容
printf 函数 会在控制器上输出括号中的内容
内容是一个字符串 值为 Hello World 然后换行 \n 表示换行
最后面的分号 表示一条语句的结束

C语言的语句 可以跨域多行 并用分号通知程序 语句已经结束

编译

因为 C语言不是机器语言 我们写好的代码计算机是无法理解的
计算机是不认识这些高级语言的
这是 就需要编译器生成目标代码
编译器可以将源代码转换成机器语言,生成目标文件,扩展名为 : o 或者 obj
在这里插入图片描述

链接

一个C语言程序可能用到程序库中的函数,也可能包含多个源代码文件,所以在编译之后,需要链接器将它们组合起来,生成可执行文件,扩展名为 exe

将多个 C语言文件 C语言函数库 通过链接器 组合成一个可执行的文件
在这里插入图片描述

执行

通过链接得到一个可执行文件后 程序的运行 首先需要初始化系统相关资源 然后 才运行 main 函数
在这个阶段 计算机会精确地执行每一条指令
但运行的结果 可能正确 也可能错误 甚至可能导致计算机崩溃

处理问题

所以 处理错误的能力 非常重要
程序都是程序员写的 程序员也是人 难免出错 所以 需要细致的 逐步处理错误

这个过程 包括 分析问题 编制程序 编译 链接 调试运行 最后就完成了
编译时 会出现的通常是语法错误 我们需要回到编制阶段 重新修改
连接阶段 出现的错误 也是 要求源代码中寻找并修复

到运行阶段 出现错误 就无法通过修改源程序解决了 这个时候 就需要重新分析问题 例如内存等因素了

第二个 计算两个整数的合
在这里插入图片描述
其中 int 声明整数类型 三个变量 a b sum
然后 给 a 赋值 a 等于 3
然后 b赋值等于 5
最后 sum 赋值 为 a + b
最后 通过 printf 输出 sum的值 这里结果就是 3+5 等于 8 输出的结果为 8

然后 来说说注释
C语言 可以编写注释 以便向读者说明

编译器 并不会处理这些注释

注释有一下几种

单行注释
是双斜杠 如下代码
//这是单行注释
代码块中是这样的效果

//这是单行注释

如果是多行注释 就是 斜杠星号
例如
/*
这是一个多行注释
*/
代码块效果如下

/*
   这是一个多行注释
*/

之前 我们也看到了 这个 #include 也说了井号开头的 命令 叫做预处理器
就是 编译器 编译代码之前 会有一个预处理阶段 这个阶段 专门就处理这些预处理命令

下图这个
在这里插入图片描述
#include 就是 将 stdio.h文件 导入进来

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flutter 事件传递简单概述、事件冒泡、事件穿透

前言 当前案例 Flutter SDK版本:3.13.2 本文对 事件传递只做 简单概述,主要讲解,事件传递过程中可能遇到的问题解决,比如 事件冒泡、事件穿透; 不是我偷懒,是自认为没有这几位写的详细、仔细&#xff0c…

【Langchain-Chatchat】部署ChatGLM3-6B-32K教程

介绍 Langchain-Chatchat这个框架可以帮助我们更容易的部署大语言模型,之前也写过ChatGLM传统的部署教程,有兴趣的可以参考 【ChatGLM3】第三代大语言模型多GPU部署指南【ChatGLM2-6B】从0到1部署GPU版本 借助Langchain-Chatchat框架,可以…

入门linux之Ubuntu学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1、介绍Ubuntu2、虚拟机目录解析3、常用指令ls:罗列当前目录文件信息对ls -l 的结果解析1.第一个字符2.每三个字符(第一个字符后&#x…

新店开通后要做什么?一定要先做这几个设置,不然会影响店铺流量

大家好,我是电商花花。 新手做店如果没有一个完整的做店思路,很容易迷茫,没有方向,没有步骤,做完上一步不知道下一步该去干嘛。 今天给大家讲一下在开店后一定要做的几项基础搭建。 1、绑定官方账户 开店后在店铺后…

【ORB-SLAM3】在 Ubuntu20.04 上编译 ORM-SLAM3 并使用 D435i 运行测试

【ORB-SLAM3】在 Ubuntu20.04 上编译 ORM-SLAM3 并使用 D435i 运行测试 1 Prerequisites1.1 C11 or C0x Compiler1.2 Pangolin1.3 OpenCV1.4 Eigen3 2 安装 Intel RealSense™ SDK 2.02.1 测试设备2.2 编译源码安装 3 编译 ORB-SLAM34 使用 D435i 运行 ORB-SLAM34.1 运行4.2 运…

【Linux】环境变量常见指令操作&基本实验(入门必看!)

前言 大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《…

如何用联合(共用体)union验证系统大小端

一:思路 由联合体的特点,可知上图,char c 和 int i 共用四个字节,假设是小端,则由左到右是低地址到高地址,四个字节的内容如图所示01 00 00 00 代码展示: 如果第一个字节是1,则证明…

【前端】Web API

1.Web API 简介 JS分为三大部分: ESCMScript:基础语法部分DOM API:操作页面结构BOM API:操作浏览器 Web API包含 DOM BOM 2.DOM基本概念 DOM全称 Document Object Mod…

Jenkins中支持maven构建遇到仓库报错问题

目的 Jenkins中支持maven构建(Jenkins使用docker安装) 问题 1.构建一个maven项目 2.执行报错 /var/lib/jenkins/local_maven_repo/com/sx/root/1.0.4/root-1.0.4.pom.part.lock (No such file or directory) Failed to transfer Could not transfer artifact co…

后端系统开发之——功能完善

原文地址:https://blog.yiming1234.cn/?p830 下面是正文内容: 前言 通过SpringBoot开发用户模块的部分也就差不多要结束了,这一片文章就主要提一些在系统开发中需要注意到的细节部分和功能,也就是剩余的部分。 但是这个专栏只介…

监控系统Prometheus--入门

文章目录 Prometheus特点易于管理监控服务的内部运行状态强大的数据模型强大的查询语言PromQL高效可扩展易于集成可视化开放性 Prometheus架构Prometheus 生态圈组件架构理解 Prometheus的安装安装Prometheus Server上传安装包解压安装包修改配置文件 prometheus.yml 安装Pushg…

linux下docker容器的使用

1、根据已有镜像images创建容器 1.1、查看镜像 如果是接手的别人的项目,需要从以往的images镜像中创建新容器,使用命令查看当前机器上的docker镜像: docker images1.2、创建容器 使用docker run 根据images镜像名创建容器,命令…

查看Scala类的方法

文章目录 一、概述如何查看Scala类的方法二、使用Scala文档查看类的方法三、使用反射机制查看类的方法 一、概述如何查看Scala类的方法 本文介绍了在Scala中查看Int类方法的两种方法:使用Scala标准库文档和使用反射机制。通过Scala标准库文档,您可以方便…

[Netty实践] 请求响应同步实现

目录 一、介绍 二、依赖引入 三、公共部分实现 四、server端实现 五、client端实现 六、测试 一、介绍 本片文章将实现请求响应同步,什么是请求响应同步呢?就是当我们发起一个请求时,希望能够在一定时间内同步(线程阻塞&am…

操作系统面经-用户态和内核态

字节实习生带你面试,后台私信可以获得面试必过大法!! 根据进程访问资源的特点,我们可以把进程在系统上的运行分为两个级别: 用户态(User Mode) : 用户态运行的进程可以直接读取用户程序的数据,拥有较低的…

启动Vue-demo时引发的一系列问题—解决办法

目录 1.初始遇到的问题:输入npm run dev 1.治标的解决方法 2.治本的解决方法 第一步:检查是否安装了cnpm 第二步:手动找到cnpm目录 第三步:配置系统环境变量 第四步:查看是否安装成功 1.初始遇到的问题&#xf…

JavaSE:类与对象

目录 一、前言 二、类与对象的介绍 1.类的定义格式 三、类的实例化 1.类的实例化介绍 2.成员初始化 3.类中方法的实现 四、封装 1.private实现封装 2.getter和setter方法 五、构造方法的使用 1.构造方法的介绍 2.构造方法的特性 六、this引用 1.this的介绍 2.th…

LeetCode---126双周赛

题目列表 3079. 求出加密整数的和 3080. 执行操作标记数组中的元素 3081. 替换字符串中的问号使分数最小 3082. 求出所有子序列的能量和 一、求出加密整数的和 按照题目要求,直接模拟即可,代码如下 class Solution { public:int sumOfEncryptedInt…

Oracle Data Guard常用命令

--查询数据库角色和保护模式 select database_role,switchover_status from v$database; --切换备库为主库(切换后,主库为mount状态) --TO PRIMARY alter database commit to switchover to primary; --SESSIONS ACTIVE alter database comm…

如何保障消息一定能发送到RabbitMQ?

我们知道,RabbitMQ的消息最终是存储在Queue上的,而在Queue之前还要经过Exchange,那么这个过程中就有两个地方可能导致消息丢失。第一个是Producer到Exchange的过程,第二个是Exchange到Queue的过程。 为了解决这个问题&#xff0c…