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.pswp.cn/bicheng/16168.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16168.shtml
英文地址,請注明出處:http://en.pswp.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可能沒有預裝。可以…