3 第一个 C 程序、程序编译过程、注释、printf 基本使用、代码块风格

news2024/9/21 19:04:41

目录

1 第一个 C 程序

1.1 需求说明

1.2 开发步骤

1.3 使用终端运行程序

1.4 程序代码分析

2 C 程序运行机制流程

2.1 编写

2.2 预处理

2.3 编译

2.4 汇编

2.5 链接

2.6 运行

2.7 gcc 步骤指令

3 C 程序开发注意事项

4 注释

4.1 什么是注释

4.2 注释的作用

4.3 单行注释

4.4 多行注释

4.5 没有注释的危害

5 printf 输出内容

6 代码块风格

6.1 行尾风格

6.2 次行风格


1 第一个 C 程序

1.1 需求说明

        要求开发一个程序,输出 "hello,world!"。

1.2 开发步骤

        创建一个新文件夹,注意文件夹名字中不能有中文,所在的路径中也不允许有中文,如下图:

        打开 VS Code,单击顶部菜单中的 “文件”,在下拉菜单中点击 “打开文件夹”,找到上一步创建的文件夹:

        首次打开文件夹,需要点击 “是,我信任此作者”,如下图:

        新建文件 main.c,如下图:

        将下面的代码写入 main.c 中。

#include <stdio.h>

int main()
{
    printf("Hello World");
    return 0;
}

        运行代码,如下图:

1.3 使用终端运行程序

        如果觉得 vscode 终端窗口中杂乱信息过多,也可以在电脑终端中运行所生成的 main.exe 可执行文件,先在资源管理器中找对文件所在路径:

        如果直接鼠标双击生成的 main.exe 可执行文件,窗口会一闪而过,啥也看不见,因为这个程序运行太快了。如果需要看清的话,需要在终端中来运行此程序:

        右键文件夹空白区域默认打开的是 powershell ,在 powershell 里面运行程序需要加上路径

        也可以在 cmd 中运行程序,先切换盘符,然后进入文件所在文件夹即路径,最后运行程序: 

       或者使用绝对路径直接一步到位:

        或者在 vscode 中间接访问电脑终端来运行程序:

        清除 vscode 终端:输入 clear 并回车,或者点击菜单按钮中的清除终端:

1.4 程序代码分析


2 C 程序运行机制流程

2.1 编写

        编写 C 语言源程序代码,并以文件的形式存储到磁盘中,源代码文件以 “.c” 作为扩展名,如本项目中 main.c 文件。

2.2 预处理

        在编译之前,预处理器会处理源代码文件,主要进行一些文本上的处理,包括去掉多余的空格和注释,处理预处理指令(后面会学到)生成经过处理的源代码文件,通常带有 .i 扩展名。

2.3 编译

        编译器接受预处理后的源代码文件,并将其翻译成汇编代码,生成汇编文件,通常带有 .s.asm 扩展名。

2.4 汇编

        汇编器将汇编代码翻译成机器码并生成一个或多个目标文件,目标文件是二进制文件,通常带有 .o(在 Unix-like 系统上)或 .obj(在 Windows 上)。

2.5 链接

        链接器多个目标文件(如果有的话)合并在一起,包括 C 标准库文件和其他库文件,生成最终的可执行的二进制程序(.exe 程序)。

        库文件是由系统提供,里面包括内置的标准函数和数据结构集合等,我们代码中使用的 <stdio.h> 就是标准库提供的,里面定义 printf 这个函数。

2.6 运行

        执行该 .exe 文件得到程序的运行结果。

2.7 gcc 步骤指令

        可以在终端中输入 gcc --help,查看指令帮助:

        预处理:gcc -E main.c -o main.i

        编译:gcc -S main.i -o main.s

        汇编:gcc -c main.s 或 gcc -c main.s -o main.o

        链接:gcc main.o 或 gcc main.o -o main


3 C 程序开发注意事项

        C 程序源文件以 "c" 为扩展名

        C 程序的执行入口是 main() 函数

        C 语言严格区分大小写

        C 程序由一条条语句构成,每个语句以英文 ";" 结束


4 注释

4.1 什么是注释

        编程语言中,注释是一种特殊的文本,它不会被编译器执行,而仅用于代码的解释和文档说明

4.2 注释的作用

        对代码进行解释说明,帮助其他开发者理解代码的意图、功能和逻辑。

        注释掉暂时不想执行的代码,在代码调试中经常用到。

4.3 单行注释

// 这里是注释内容

        vscode 中快捷键:ctrl + / 

4.4 多行注释

/* 这里是注释内容 */

/* 
   这里是注释内容
*/

4.5 没有注释的危害

        程序中缺乏注释会显著降低代码的可读性和可维护性,阻碍团队协作与知识传承,从而影响软件开发效率和质量。 


5 printf 输出内容

        使用 printf() 输出内容到终端,要输出的内容需要用双引号包裹,如果需要换行可以使用 “\n

#include <stdio.h>

int main()
{
    printf("Hello, World!");
    printf("\nMusk is learning C\n");
    printf("\n锄禾日当午,\n汗滴禾下土,\n谁知盘中餐,\n粒粒皆辛苦");

    return 0;
}

        运行结果如下所示:

        关于 printf() 更多知识点,后面会详细介绍。


6 代码块风格

6.1 行尾风格

int main() {
    printf("Hello World");
    return 0;
}

6.2 次行风格

int main() 
{
    printf("Hello World");
    return 0;
}

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

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

相关文章

Java面试八股之什么是AMQP协议

什么是AMQP协议 AMQP&#xff08;Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff09;是一个开放标准的应用层协议&#xff0c;旨在为消息中间件提供一种统一的、标准的通信方式。它允许消息在分布式系统中的应用程序之间进行可靠的、异步的传递。AMQ…

console调试

简介 浏览器的开发者工具为我们提供了强大的调试系统&#xff0c;可以用来查看DOM树结构、CSS样式调试、动画调试、JavaScript代码断点调试等。今天我们就来看看console调试的那些实用的调试技巧。 我们使用最多的就是console.log()了&#xff0c;当然多数情况下&#xff0c;…

0813,引用,函数重载,内存布局叭叭叭

是我4句话5个ERROR&#xff0c;阿巴阿巴 001_arrpointer.cc #include <iostream> using std::cout; using std::endl;void test(){int a[5]{1,2,3,4,5};int (*p)[5]&a;cout<<p<<endl;cout<<p1<<endl;int *pp(int*)(&a1);//第二个数组的…

vscode + cmake + ninja + ARMCC 配置stm32开发环境(构建篇)

vscode cmake ninja ARMCC 配置stm32开发环境&#xff08;构建篇&#xff09; 1. 前置环境 1.1 cmake安装 从CMake官网上下载CMake安装包进行安装CMake。CMake官网 安装完成之后&#xff0c;使用cmd查看cmake是否添加进入环境变量。 1.2 LLVM套件安装 从LLVM的github…

K8S上安装LongHorn(分布式块存储) --use

要在 Kubernetes上安装 LongHorn&#xff0c;您可以按照以下步骤进行操作&#xff1a; 一、准备工作 参考 官网教程将LongHorn只部署在k8s-worker5节点上。https://github.com/longhorn/longhorn 安装要求 Each node in the Kubernetes cluster where Longhorn is installe…

Java虚拟机:运行时内存结构

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 035 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

人口老龄化社区服务与管理平台

TOC springboot136人口老龄化社区服务与管理平台 系统概述 1.1 研究背景 人口老龄化社区服务与管理平台是面向居家老人用户、社区的系统与信息平台&#xff0c;并在此基础上提供实时、快捷、高效、低成本的&#xff0c;物联化、互联化、智能化的人口老龄化社区服务服务。 …

CTFHub~SQL注入超简单详细教程

0x01整数型注入 # 本题告诉我们是整数型&#xff0c;所以就很容易了# 判断字段数量 1 order by 2# 判断回显点 -1 union select 1,2# 查询全部数据库名 -1 union select 1,group_concat(schema_name) from information_schema.schemata# 判断数据库中的表名 -1 union select 1…

Python采集爬取cnmo网站手机数据案例实现

前言 本例子利用Python爬虫爬取cnmo网站2020年至2022年11月的手机数据&#xff0c;并对其进行数据处理和可视化分析。 1、效果展示 如下如最终我们将得到一个包含手机型号、颜色、内存、价格及购买链接等的excel表以及dataframe和可视化效果。 2、需要用到的库 import panda…

【OpenCV——python】形态学变换 颜色空间 颜色替换 掩膜 旋转

形态学变换 形态学变换一般是处理二值图的腐蚀和膨胀操作&#xff0c;输入二值化图像和核&#xff0c;对图像进行类似卷积的操作 核 核是一定大小的区域&#xff0c;在原图中进行滑动计算 腐蚀erode 腐蚀过程 核在图像上滑动&#xff0c;对应位置相乘&#xff0c;最小值作为核…

孙宇晨领航波场TRON:引领数字资产迈向崭新纪元

​ 在风起云涌的数字资产领域&#xff0c;孙宇晨这个名字始终与创新、突破和引领紧密相连。作为波场TRON的创始人&#xff0c;他不仅是一位远见卓识的领导者&#xff0c;更是推动数字资产迈向新纪元的坚实力量。 自波场TRON诞生以来&#xff0c;孙宇晨便以其敏锐的洞察力…

MongoDB教程

目录 介绍启动命令命令行操作常用命令总结MongoDB Compass 介绍 MongoDB是一个基于分布式文件存储的开源数据库系统&#xff0c;由C语言编写&#xff0c;旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB将数据存储为一个文档&#xff0c;数据结构由键值对组成&…

轮式遥控无人侦察车技术详解

轮式遥控无人侦察车&#xff08;Wheeled Remote-Controlled Unmanned Ground Vehicle, RCUGV&#xff09;作为现代战场及复杂环境侦察作业的重要工具&#xff0c;以其灵活性高、机动性强、风险低等优势&#xff0c;在军事侦察、灾害评估、环境监测等多个领域发挥着不可替代的作…

Cesium 加载高斯泼溅(Gaussian Splatting)模型

Cesium 加载高斯泼溅&#xff08;Gaussian Splatting&#xff09;模型 高斯泼溅&#xff08;Gaussian Splatting&#xff09; 高斯泼溅是一种革命性的 3D 重建新方法&#xff0c;它试图解决其他方法存在的一些问题&#xff0c;例如处理时间长。对于这种方法&#xff0c;他们的…

成都云飞浩容文化传媒有限公司是做什么的?

在数字经济的浪潮中&#xff0c;电商行业如日中天&#xff0c;成为推动经济发展的重要引擎。在这场没有硝烟的商战中&#xff0c;如何脱颖而出&#xff0c;实现品牌与销量的双重飞跃&#xff1f;成都云飞浩容文化传媒有限公司&#xff0c;作为电商服务领域的佼佼者&#xff0c;…

JavaHadoop白云白云图书管理系统---附源码19272

目 录 摘要 Abstract 1 绪论 1.1 研究背景及意义 1.2国内外研究现状 1.3 论文结构与章节安排 2 白云图书管理系统系统分析 2.1 系统可行性分析 3.2.1 技术可行性 3.2.2 经济可行性 3.2.3 操作可行性 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 …

【Web】LIT CTF 2024 题解(全)

目录 anti-inspect jwt-1 jwt-2 traversed kirbytime scrainbow anti-inspect 因为一直while true&#xff0c;网页会卡死无法访问 const flag "LITCTF{your_%cfOund_teh_fIg_94932}";console.log(flag,"background-color: darkblue; color: white; f…

Nginx异常关闭之中了挖矿病毒kswapd0

问题描述&#xff1a;系统突然无法访问了&#xff0c;登录服务器看了一下是因为Nginx服务关闭&#xff0c;重启后过了几天仍然异常关闭 系统&#xff1a;CentOS 7&#xff0c;Nginx 1.20 尝试解决过程&#xff1a;1、查询nginx/logs/error.log、系统日志&#xff0c;都没有查…

Ubuntu18.04 配置EtherCAT主站IGH SOEM

IGH IGH 是开源的EtherCAT 主站软件 一、安装依赖 sudo apt update sudo apt install build-essential linux-headers-$(uname -r) mercurial autoconf libtool 也不知道安装的完全不完全 uname -r 可以查看内核&#xff0c;我安装的ubuntu18.04的内核版本是 5.4.0-84-gen…

Robotics: Aerial Robotics 部分笔记——Week2(1) 运动学

Week 2.1 g ( q ) g(q) g(q) is called g of q.Rotation matrix R R R: P ′ R P PRP P′RP。旋转矩阵都是正交的&#xff08;orthogonal&#xff09;&#xff0c;即 R T R R R T I R^TRRR^TI RTRRRTI&#xff1b;行列式为1 d e t R 1 det R 1 detR1&#xff1b;且旋转矩…