1.6 什么是程序-编译与调试

目录

1 程序的作用

2 新建项目及编译运行

2.1 新建项目

2.2 HelloWorld 程序说明

2.3 printf 打印输出

2.4 注释

3 程序的编译过程及项目位置

4 断点及调试窗口设置

5 学习C语言后的境界


1 程序的作用

如下图所示,我们编写了一个可以做加法的程序,我们给程序输入 1 和 2,那么程序输出结果 3,因此程序的作用是完成某种计算


2 新建项目及编译运行

2.1 新建项目

2.2 HelloWorld 程序说明

新建项目后默认会有一个main.c代码,如下图所示:

#include <stdio.h> // 引入标准输入输出头文件,以便使用printf函数  int main() { // 主函数,程序的入口点  // 调用printf函数,在屏幕上打印出"Hello, World!\n"  // \n 是一个转义字符,表示新的一行  printf("Hello, World!\n");  // main函数返回0,表示程序正常结束  return 0;  
}

程序说明:

  • main是主函数名,int是函数返回值类型
  • 每个C程序有且只能有一个主函数main,程序从main函数开始执行。
  • 花括号{}是函数开始和结束的标志,不可省略。
  •  每个C语句均以半角分号结束。

2.3 printf 打印输出

使用标准库函数时应在程序开头一行书写如下内容:

#include <stdio.h> //printf函数需要使用该头文件

printf函数起打印输出的作用,它将双引号中的字符串 Hello, World! 打印到屏幕上

2.4 注释

两个斜杠“//”后面的内容为代码注释,程序编译时不会编译到程序中。


3 程序的编译过程及项目位置

程序的编译过程如下图所示。首先编写源程序main.c。编写完毕后,通过编译器进行编译,main.c经过编译后,得到可执行文件(windows下是exe,Mac和Linux下是不带后缀的,统称为可执行文件),可执行文件中均是0/1类型的机器码,即CPU能够识别的微指令(英特尔的机器指令),CPU才能够去执行。

如下图所示,右键单击“项目名”,选择打开,选择Explorer:

就可以看到如下界面,就是我们的项目文件夹:


4 断点及调试窗口设置

程序在我们点击绿色三角形按钮时,一下子就运行到最后一步了,速度非常快,如果最终输出的结果和我们预期的不一样,我们如何查找代码的哪一步出了问题呢?秘诀就是让它运行慢下来(类似于魔术慢放),一次只让程序运行一步,如何让程序运行慢下来,那就是断点调试!如下图所示,在位置1处添加断点(断点位置代表从哪一步我们开始慢下来),点击位置2启动调试。

当点击虫子按钮后,调试就启动了,出现蓝色长条代表调试启动,如下图所示:

注意:蓝条所在行,表示此语句还未得到执行。

点击了上图的单步运行按钮(上图2指向的折弯箭头),得到如下图:

什么是调试?

程序每一步的运行会发生计算,计算会改变变量的值,我们通过变量监视窗口,如果发现某个变量值不符合我们预期时,就代表我们找到了bug(程序员把程序中出现的错误称为bug)。
 


5 学习C语言后的境界

掌握的能力是程序的调试能力,要灵活掌握单步调试手段,要能在清晰理解程序执行过程的基础上准确分析数据(变量)的变化过程,定位程序的问题点,进而解决问题。学好了C语言,才能去练习中级阶段的数据结构算法实战,而且以后在学习其他任何语言并调试程序的问题时都会事半功倍!


6 练习题

1、程序的作用是完成某种计算?

A.正确        B.错误

答案:A


2、一个项目可以有2个main函数?

A.正确        B.错误

答案:B

解释:一个项目只能有一个main函数,因为main 函数是入口函数,程序从这里开始运行。

3、源代码文件main.c需要编译为最终的可执行文件,CPU才能执行,CPU不能够直接去运行main.c?

A.正确        B.错误

答案:A

解释:因为编译好的可执行文件内的指令是才能够被CPU的译码器解析。

4、CLion是点击绿色三角形开启调试?

A.正确        B.错误

答案:B

解释:绿色三角形按钮是运行按钮,绿色小虫子按钮才是调试按钮。

5、CLion 调试时蓝色长条线所在行代码已经得到执行?

A.正确        B.错误

答案:B

解释:蓝色长条线所在行代码并未得到执行,是其将要被执行。

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

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

相关文章

vue3 vite项目配置了proxy代理情况下查看真实的接口调用地址

vite配置了proxy代理情况下如何查看真实的接口调用地址? 使用vite进行代理 在vite.config.ts配置了代理 在浏览器查看请求头和响应头发现只有代理前的url&#xff0c;没有显示代理后的路径 然后发现一个bypass函数&#xff0c;但是此函数只能修改res响应头的数据&#xff0…

C语言基础-链表和数组的区别

在C语言中&#xff0c;链表&#xff08;Linked List&#xff09;和数组&#xff08;Array&#xff09;是两种常用的数据结构&#xff0c;它们在数据存储和访问上各有其独特的作用和优势。以下是对这两种数据结构的作用以及它们之间的不同点的详细说明&#xff1a; 数组&#x…

Dockerfile文件详细介绍

前言 Dockerfile是一个文本文件&#xff0c;包含了用于构建Docker镜像的所有命令和说明。它定义了容器的运行环境、依赖以及启动方式&#xff0c;是创建Docker镜像的核心部分。 由于制作镜像的过程中&#xff0c;需要逐层处理和打包&#xff0c;比较复杂&#xff0c;所以Docke…

实战复盘:内网环境渗透ms-SQL数据库

渗透环境&#xff1a;如下图所示&#xff0c;web服务器、ms-SQL服务器、PC客户端在同一个网络中&#xff0c;彼此之间&#xff0c;没有路由器或防火墙的隔离&#xff0c;这是一种危险的网络结构&#xff0c;入侵ms-SQL服务器&#xff0c;非常容易。&#xff08;实战中&#xff…

整理了10个靠谱且热门的赚钱软件,适合普通人长期做的赚钱副业

作为一名普通的上班族&#xff0c;我们每天都在辛勤工作&#xff0c;但工资的增长速度却如同蜗牛般缓慢。不过&#xff0c;别担心&#xff0c;信息时代总是带给我们无尽的惊喜&#xff01;今天&#xff0c;我将为大家推荐一些赚钱的宝藏软件&#xff0c;让你在闲暇之余轻松实现…

Java-Zookeeper

zookeeper是什么 一个分布式、开源的分布式应用程序协调服务&#xff0c;具有配置维护、域名服务、分布式同步、组服务等 zookeeper有哪些功能 功能简介集群管理监控节点状态、运行请求等主节点选举主节点挂掉之后会执行新主选举分布式锁zookeeper提供两种锁&#xff1a;独占…

IEDA常用快捷键(后续更新ing)

1. 快速生成语句 1.快速生成main()方法 psvm或者main回车 2.快速生成输出语句 sout,回车 3.快速生成for循环 fori或者itar,回车 2.快捷键 含义操作查找文本CtrlF替换文本CtrlR单行注释Ctrl/多行注释CtrlShift/格式化CtrlAltL复制当前内容至下一行CtrlD补全代码Alt/快速生成…

RAGs:自动化评估 RAG 示例代码

文章目录 原理忠实度&#xff08;Faithfulness&#xff09;答案相关性&#xff08;Answer Relevance&#xff09;上下文相关性&#xff08;Context Relevance&#xff09;上下文召回率&#xff08;Context Recall&#xff09;答案正确性&#xff08;Answer Correctness&#xf…

C# 机构仿真实例

1、实现连杆带动滑块运动 一个连杆旋转带动另一个连杆&#xff0c;另一个连杆拖动滑块&#xff0c;点击“开始”按钮开始运动&#xff0c;再点击按钮&#xff0c;则停止运动。 2、实现程序 #region 机构仿真Image image null;Timer timer new Timer();int width 0;int heig…

一千题,No.0027(Phone Desktop)

描述 Little Rosie has a phone with a desktop (or launcher, as it is also called). The desktop can consist of several screens. Each screen is represented as a grid of size 53, i.e., five rows and three columns. There are x applications with an icon size o…

【网络安全】社会工程学攻击与防范

一、社会工程学概述 1、社会工程学的定义 通过利用人们的心理弱点、本能反应、好奇心、信任、贪婪等一些心理陷阱进行的诸如欺骗、伤害、信息盗取、利益谋取等对社会及人类带来危害的行为或方法。 当网络恶意攻击者无法通过纯粹的计算机技术达到目的时&#xff0c;高超的情商…

9.Redis之list类型

list相当于链表、数据表 1.list类型基本介绍 列表中的元素是有序的"有序"的含义,要根据上下文区分~~有的时候,谈到有序,指的是"升序","降序”有的时候,谈到的有序,指的是, 顺序很关键~~如果把元素位置颠倒,顺序调换.此时得到的新的 List 和之前的 Li…

js简单综合案例之简易ATM取款机、渲染表格案例、封装时间函数

这里写目录标题 简易ATM取款机要求代码实现 渲染表格案例要求代码实现 封装时间函数要求代码实现 简易ATM取款机 要求 1.弹出弹窗&#xff0c;让用户输入数字选择操作 2.初始值金额为100&#xff0c;计算每次操作后的剩余金额变化 3.一直弹出弹窗直到用户输入4&#xff0c;跳…

OpenCV SIFT特征描述子(GPU版本)

文章目录 一、简介二、测试过程三、实现效果参考资料一、简介 这里主要测试一下SIFT图像描述子的GPU版本。SIFT图像描述子,全称Scale-Invariant Feature Transform(尺度不变特征变换),是计算机视觉和图像处理领域中一种非常重要的局部特征描述子。它主要用于图像的特征点检…

新闻稿海外媒体投稿,除了美联社发稿(AP)和彭博社宣发(Bloomberg),还有哪些优质的国外媒体平台可以选择

发布高质量的新闻稿到海外媒体&#xff0c;除了美联社发稿&#xff08;AP&#xff09;和彭博社发稿&#xff08;Bloomberg&#xff09;&#xff0c;还有许多其他优质的媒体平台可以选择。以下是一些受欢迎和高效的海外媒体发布平台&#xff1a; 路透社 (Reuters) 路透社是全球最…

Webpack Bundle Analyzer:深入分析与优化你的包

Webpack Bundle Analyzer是一个用于可视化的工具&#xff0c;它可以帮助你分析Webpack打包后的输出文件&#xff0c;查看哪些模块占用了最多的空间&#xff0c;从而进行优化。 2500G计算机入门到高级架构师开发资料超级大礼包免费送&#xff01; 首先&#xff0c;你需要安装W…

IIC通信(STM32)

一、IIC概念 &#xff11;、两根通信线&#xff1a;SCL&#xff08;Serial Clock&#xff09;、SDA&#xff08;Serial Data&#xff09; 同步&#xff0c;半双工 2、带数据应答 3、支持总线挂载多设备&#xff08;一主多从、多主多从&#xff09;一般使用一主多从。一主多从的…

【深度学习】paddlets,时序数据预测

文章目录 一、环境二、题目1三、题目2四、题目3五、函数参数 资料&#xff1a; https://paddlets.readthedocs.io/zh-cn/latest/source/api/paddlets.models.base.html#paddlets.models.base.BaseModel.recursive_predict https://aistudio.baidu.com/projectdetail/5866171?…

陪跑真正值钱的不是教程,是你遇到那个挡住你的问题时,身边有个靠谱的人

今天分享两个概念&#xff0c;一个是意识决定一切&#xff0c;一个是大道至简&#xff0c;做项目就是按部就班的遵循事情发展规律去做。 先说第一个概念&#xff0c;意识决定一切。我们说的凡事预则立不预则废&#xff0c;就是计划了去做就会有结果。 给你们一个表&#xff0c;…

Linux简单通过Minicom命令操作串口设备(linux串口操作命令)

Minicom是一个在Linux系统中广泛使用的串行通信程序。它类似于Windows下的超级终端,允许用户通过串口与外部硬件设备进行通信。Minicom不仅功能强大,而且完全免费,带有源代码,可以在大多数Unix系统下运行。 安装Minicom 在大多数Linux发行版中,Minicom可能没有预装。可以…