理解一个最简单的C语言代码,“hello world!“的真相

2023-11-09

怎么编写出一个最简单、能运行的程序

int main(){
}

使用你习惯的编辑器,创建test.cpp,把这些代码敲进去,这就是一个程序了,

他可以编译成一个test.exe,是一个可以执行的程序,只不过这个程序什么事情都没做。

可以暂时不用理解为什么这个int在这里,为什么需要main,为什么又有一个括号,为什么又有大括号,这些实际上可能都是暂时无关紧要的事情。

这个main程序的关键

{ 这个大括号里面加入进行的代码和操作 }

重点在于,你可以往大括号里写,你想做的事情,比如:

int main(){
    让你的电脑打开某个文件的代码
    让你的电脑关机的代码
}

把这些代码写进去,编译出程序test.exe,你执行它,他就会 打开某个文件,然后 给你的电脑关机

Hello world!

#include <stdio.h>
int main() {
    int x = 100;
    printf("%s", x);
    return 0;
}

我们看到几乎所有的教程都会教你写这个hello world,里面有令人费解几个问题,我想通过另一个案例来尝试说明:

  • printf("%s", x); 里为什么有这个%s,为什么要放在""里,为什么又在这放了一个x

  • 为什么要写一个这样的语句,带着一个奇怪的括号,后面又写了一个奇怪的分号

  • 为什么结束又有个return 0,说是返回值,往哪返回,返回了又做什么?

  • 开头为什么又写了一个 #include <stdio.h>

这些都是学习编程都要理解的内容,但我们可以先把重心放在真正理解hello world上;

翻译成上面的案例:

导入stdio.h文件里面的代码
int main() {
    在屏幕上打印 hello world 的代码
}

翻译成这样你会发现,我们就做了2件事情,导入和打印,你可以简单地先记住这2条规则:

  • 导入放在这个main什么的一坨的外面

  • 执行的代码放在main这一坨里面

换一种写法?

上面的是C语言的写法,接下来我要介绍C++的写法,别担心,对于我们来说,C语言和C++的区别并不是变难了,相反,只是改变了一些特别的属性,我们用C++写同样的代码:

#include <iostream>
using namespace std;

int main(){
    cout << "Hello world!";
}

没错,上面的includeusing还是起一个导入代码的功能;

cout<< "XXXX" 则是在屏幕上打印一些字(或者其他东西)的代码;

为什么没有return了呢?在这里他不是必须有的,我们可以在函数部分进行详细的讨论。

实践你的代码

进步的最好办法就是坚持写代码,把上面的代码操作一遍,看看进行一些改动会发生什么!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解一个最简单的C语言代码,“hello world!“的真相 的相关文章

随机推荐

  • linux命令行常用的移动操作

    linux命令行常用的移动操作 1 光标快速切换到行尾行首 Ctrl a 行首 Ctrl e 行尾 2 删除至行尾 Ctrl k 3 删除命令行的命令 Del 删除属光标所在处的字符 Ctrl d 删除光标所在处的字符 BACKSPACE或
  • PAT乙级 1010 一元多项式求导 (25分)

    1010 一元多项式求导 25分 设计函数求一元多项式的导数 注 x n n为整数 的一阶导数为nxn 1 输入格式 以指数递降方式输入多项式非零项系数和指数 绝对值均为不超过 1000 的整数 数字间以空格分隔 输出格式 以与输入相同的格
  • 如何搭建一台属于自己的服务器

    对于新手小白来说 我推荐使用大厂们的服务器 比如阿里云 腾讯云等 这种不仅有强大的大厂背景支持 且不用担心维护 界面功能友好完善 非常适合新手小白 我使用的是腾讯云 所以接下来以腾讯云为例讲解 服务器类型的选择 个人用户的话推荐大家使用 轻
  • 图文详解MOS管的米勒效应

    如下是一个NMOS的开关电路 触发信号VG1设置DC电平2V 方波 振幅2V 频率50Hz T2的开启电压2V 所以MOS管T2会以周期T 20ms进行开启和截止状态的切换 首先仿真Vgs和Vds的波形 会看到Vgs 2V的时候有一个小平台
  • Java自动化测试语言高级之Iterator

    Java自动化测试语言高级之Iterator 文章目录 Java自动化测试语言高级之Iterator Java Iterator 迭代器 Java Iterator 迭代器 Java Iterator 迭代器 不是一个集合 它是一种用于访问
  • shell 字符串数组的使用

    ex 简单例子 str h ee h i h ed0llo for s in str do echo s done PS 最开始折腾好久 是因为我写了一个str6 5 这样的变量 导致 一直报错 还以为是 数组声明方式有问题 我想调用另一个
  • 正点原子IMX6ULL开发板通过网络修改系统时间

    设置时区 开发板系统为正点原子出厂系统 通过网络获取时间 需要设置开发板时区 首先使用date指令查看系统当前时区 此时系统的时区为UTC 世界协调时 这个时候直接通过网络获取时间 得到的时间是UTC时区下的时间 需要先将系统的时区设置为中
  • matlab如何实现不同的值显示不同的颜色

    举例一 一 视图 二 代码 作者 CoderMan 链接 https www zhihu com question 503639152 answer 2257427351 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载
  • 二进制算法_本地二进制模式算法:其背后的数学❗️

    二进制算法 介绍 Introduction The main idea behind LBP is to describe the neighborhood of image elements using binary codes This
  • C++全局变量的初始化过程

    全局变量在main 前完成初始化 调用构造函数 在调用构造函数前 全局变量已分配空间 内存全0 多个全局变量的初始化 按照代码编译的顺序 注意 全局变量被访问前可能它还没有调用构造函数初始化 如果一个项目中 多个dll都用到一个全局变量在共
  • 开发过程中数据库使用反引号

    开发遇到的反引号 不使用会报错 反引号是为了区分MySQL的保留字与普通字符而引入的符号 index insert into sys menu menu name pid index url values 章节测测 2 kk
  • ajax无刷新登陆原理,基于Ajax技术实现无刷新用户登录功能

    感兴趣的小伙伴 下面一起跟随编程之家 jb51 cc的小编两巴掌来看看吧 代码如下 JScript 文件 function userslogon var userName document getElementById txtuserNam
  • 若依代码生成自带导入功能

    文章目录 1 修改ruoyi generator下resources下vm java controller 2 修改ruoyi generator下resources下vm java service 3 修改ruoyi generator下
  • x 的平方根

    给你一个非负整数 x 计算并返回 x 的 算术平方根 由于返回类型是整数 结果只保留 整数部分 小数部分将被 舍去 注意 不允许使用任何内置指数函数和算符 例如 pow x 0 5 或者 x 0 5 示例 1 输入 x 4 输出 2 示例
  • 【vue】渲染大量数据时性能优化

    对应vue渲染大量数据时可以考虑下面几点 1 异步渲染组件 因为组件渲染太多 影响页面的渲染时间 所有可以延迟组件渲染 可以考虑v if处理 2 可以使用虚拟滚动的组件 参考使用这个插件 vue virtual scroller 地址 ht
  • vue+element后台管理系统+TagsView基础版

    TagsView基础版 1 使用框架 插件 vue2 element vuex 2 大概思路 大概需求 1 从效果图看 人类 这个首页的tag一开始就存在 且不能被删除 2 当点击左侧栏的时候 如果没有与该菜单相应的tag则新增 如果存在
  • 关于“代码分层”的思考

    在很多语言中 都会利用 目录 来规范开发者分层的逻辑 比如Javaweb中 会将目录分为Controller Service Dao Model等等 利用目录的形式对开发者进行约束 能够使代码整体结构更加清晰 功能分工更加明确 我一直 以为
  • java中的TreeMap

    TreeMap集合 package dailyTest import javax persistence criteria CriteriaBuilder import java util StringJoiner import java
  • 弱网测试(Charles模拟)

    一 介绍 移动应用的网络环境多样 而且会出现在不同网络之间切换的场景 即使是在同一网络环境下 也会出现网络连接状态时好时坏的情况 比如时高时低的延迟 经常丢包 频繁断线 在乘坐地铁 穿越隧道 和地下车库的场景下经常会发生 所以 移动应用的测
  • 理解一个最简单的C语言代码,“hello world!“的真相

    怎么编写出一个最简单 能运行的程序 int main 使用你习惯的编辑器 创建test cpp 把这些代码敲进去 这就是一个程序了 他可以编译成一个test exe 是一个可以执行的程序 只不过这个程序什么事情都没做 可以暂时不用理解为什么