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

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

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

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

相关文章

【机器学习-23】关联规则(Apriori)算法:介绍、应用与实现

在现代数据分析中&#xff0c;经常需要从大规模数据集中挖掘有用的信息。关联规则挖掘是一种强大的技术&#xff0c;可以揭示数据中的隐藏关系和规律。本文将介绍如何使用Python进行关联规则挖掘&#xff0c;以帮助您发现数据中的有趣模式。 一、引言 1. 简要介绍关联规则学习…

Python编程之调试魔法与列表逆转之谜

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、调试魔法&#xff1a;揭开Python编程的神秘面纱 代码调试实例 二、列表逆转之谜&#…

图书管理系统——Java版

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaSE 顺序表的学习&#xff0c;点我 目录 图书管理系统菜单 基本框架&#xff1a; 书&#xff1a; 书架&#xff1a; 用户&#xff…

JavaEE初阶多线程 (5)

1.锁的策略 1.1锁的策略是什么 这个锁的策略可以理解为&#xff0c;一种做法&#xff0c;相当于当你遇到锁竞争&#xff0c;加锁解锁&#xff0c;的情况你会怎么做。 乐观锁可以理解为疫情的时候比较乐观就买了最基本的物资&#xff0c; 买的时候非常方便 1.2乐观锁 当效率…

web及网络基础图文详解

目录 1.1TCP/IP 协议族 1.2TCP/IP 的分层管理 1.3TCP/IP通信传输流 1.4 与 HTTP 关系密切的协议 : IP、TCP 和 DNS &#xff08;1&#xff09;负责传输的 IP协议&#xff08;网络层&#xff09; &#xff08;2&#xff09;确保可靠的 TCP协议&#xff08;传输层&#xff…

2024/5/26周报

文章目录 摘要Abstract文献阅读题目创新点方法网络架构LSTM 实验过程Data acquisitionData preprocessingAlgorithm parameter settingsModels evaluation 实验结果 深度学习ARIMA一、ARIMA模型的基本思想二、ARIMA模型的数学表达式三、差分过程 总结 摘要 本周阅读了一篇基于…

Aya 23 是 Cohere For AI 推出的一款最先进的新型多语言开放重量模型

相信一些对LLM关注较高的同学们&#xff0c;应该对这家加拿大的Cohere不会太陌生。毕竟此前&#xff0c;它就开源过 Aya 101 和 Command R 这两款大模型。 Cohere 的非营利性研究实验室 Cohere for AI 发布了 Aya 23&#xff0c;这是其多语言大型语言模型 &#xff08;llm&…

计算机毕业设计 | SpringBoot社区物业管理系统 小区管理(附源码)

1&#xff0c; 概述 1.1 课题背景 近几年来&#xff0c;随着物业相关的各种信息越来越多&#xff0c;比如报修维修、缴费、车位、访客等信息&#xff0c;对物业管理方面的需求越来越高&#xff0c;我们在工作中越来越多方面需要利用网页端管理系统来进行管理&#xff0c;我们…

就业班 第三阶段(ELK) 2401--5.20 day1 ELK 企业实战 ES+head+kibana+logstash部署(最大集群)

ELKkafkafilebeat企业内部日志分析系统 1、组件介绍 1、Elasticsearch&#xff1a; 是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff…

力扣HOT100 - 287. 寻找重复数

解题思路&#xff1a; 快慢指针 第一步&#xff0c;慢指针每次移动一步&#xff0c;快指针每次移动两步&#xff0c;直到它们相遇。这一步保证了它们在环中相遇。 接下来&#xff0c;将其中一个指针&#xff08;快指针或慢指针&#xff09;重置到起点&#xff08;即数组的第一…

IP数据云确认参展2024 ChinaJoy BTOB与诸位共展未来!

作为在全球数字娱乐领域兼具知名度与影响力的年度盛会&#xff0c;2024年第二十一届ChinaJoy BTOB将于7月26日至7月28日在上海新国际博览中心盛大召开&#xff0c;秉承着初心“游”在&#xff0c;精彩无限&#xff01;&#xff08;英译&#xff1a;Stay True, Game On.&#xf…

数据库攻防之MySQL

MySQL 是最流行的关系型数据库&#xff0c;与此同时也是 web 应用中最好的关系型数据库管理应用软件。我们在渗透过程中碰到的 PHP 站点大部分都会搭配 MySQL 数据库&#xff0c;因此它是红队攻防中最常遇到的数据库。 0x01 MySQL简介 MySQL 是典型的关系型数据库&#xff0c;…

Gradle筑基——Gradle Maven仓库管理

基础概念&#xff1a; 1.POM pom:全名Project Object Model 项目对象模型&#xff0c;用来描述当前maven项目发布模块的基础信息 pom主要节点信息如下&#xff1a; 配置描述举例&#xff08;com.android.tools.build:gradle:4.1.1&#xff09;groupId组织 / 公司的名称com.…

Linux-之 简易:Shell编程

1 为什么要学习Shell编程 对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些Shel脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本. 对于大数据程序员来说,需要编写Shell程序来管理集群 2 Shell是什么 Shell是一个命令行解释器&#xff…

AIGC 005-Dreambooth定制化生成,微调文本到图像的扩散模型!

AIGC 005-Dreambooth定制化生成&#xff0c;微调文本到图像的扩散模型&#xff01; 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 DreamBooth 论文 (DreamBooth: Fine-Tuning Text-to-Image Diffusion Models for Subject-Driven Generation) 提出了一种新颖的技术&#x…

AI视频教程下载:用提示工程在GPT商店构建10个GPTs

你将学到什么&#xff1f; 深入了解ChatGPT平台和GPT商店的生态系统。 开发为多样化应用定制GPT模型的专业知识。 掌握高效内容生成的AI自动化技术。 学习高级提示工程以优化ChatGPT输出。 获取构建AI驱动的数字营销和广告解决方案的技能。 了解如何为SEO写作和优化创建专…

iOS--锁的学习

iOS--锁的学习 锁的介绍线程安全 锁的分类自旋锁和互斥锁OSSpinLockos_unfair_lockpthread_mutexpthread_mutex的属性 NSLockNSRecursiveLockNSConditionNSConditionLockdispatch_semaphoredispatch_queuesynchronizedatomicpthread_rwlock&#xff1a;读写锁dispatch_barrier_…

S1E45:单链表1 课后作业

测试题&#xff1a;0. 相比起数组来说&#xff0c;单链表具有哪些优势呢&#xff1f; 答&#xff1a;长度非固定&#xff0c;可以申请添加长度 答案&#xff1a;对于数组来说&#xff0c;随机插入或者删除其中间的某一个元素&#xff0c;都是需要大量的移动操作&#xff0c;而…

Vue.Draggable:强大的Vue拖放组件技术探索

一、引言 随着前端技术的不断发展&#xff0c;拖放&#xff08;Drag-and-Drop&#xff09;功能已经成为许多Web应用不可或缺的一部分。Vue.js作为现代前端框架的佼佼者&#xff0c;为开发者提供了丰富的生态系统和强大的工具链。Vue.Draggable作为基于Sortable.js的Vue拖放组件…

在二十三届中国科学家论坛大会上,郎百忠被授予《中国首席政治书法领域科学家》荣誉称号

在5月25日于北京举办的第二十三届中国科学家论坛上&#xff0c;备受瞩目的书法家郎百忠凭借其卓越的书法造诣和深厚的政治素养&#xff0c;荣获了"中国首席政治书法科学家"称号。这一荣誉是对郎百忠多年来在书法领域的杰出贡献以及他在政治书法领域的卓越成就的肯定。…