c语言ctrl z_跟着海王学C语言-2.输出

Part 0:本文参考资料

C 程序结构 | 菜鸟教程​www.runoob.com

Part 1:从今天开始,真的要写代码了!

打开Dev-cpp,点击左上角的白色小方框和“源代码”或者键入【Ctrl+N】,开始编写代码

e194052ccfa4fc24a515026e1c3e2cce.png

输入以下代码

#include <stdio.h>
int main(){
	printf("Hello world!");
	return 0;
}

键入【Ctrl+S】保存,保存类型选择“C source files”

c9bec5442f99c5a758a36b55b863a032.png

然后按下【F11】编译并运行,数秒之后出现黑框

43901365ffb930c1141614971e557b53.png

(由于我设置了透明度,所以不是纯黑的)

至此,你成功地输出了Hello world!

撒花!

(P.S. 此时你会发现在你保存代码的地方多了一个exe,你尝试着打开它,却发现它一闪而过,此时,你需要在代码的return 0;前面加一句话:getchar();


Part 2:你的代码到底是怎么变成了exe(可以跳过)

你想哈,好端端的一个源代码,甚至就是普通的文本文件,用记事本都能打开的东西,怎么就成了exe呢?

c3134f9b470a03d7b518300fde2cc0de.png

C语言代码由固定的词汇按照固定的格式组织起来,简单直观,程序员容易识别和理解,但是对于CPU,C语言代码就是天书,根本不认识。

那你好奇了,CPU认识啥?

CPU只认识几百个二进制形式的指令。

假设没有C语言,你写代码很可能是这样子的:

0010101010111010001010010101010101001100101010101010010101001010101010100101010101000101001010100101010101010010101010101010101010101010010101010

Oh My God!看的真是令人头大!

这就需要一个工具,将C语言代码转换成CPU能够识别的二进制指令,也就是将代码加工成 .exe 程序的格式;这个工具是一个特殊的软件,叫做编译器(Compiler)

编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为编译(Compile)

其实你也可以说,编译就是一个翻译的过程

翻译过后,你的文件就变成了.exe吗?想得美!生成的文件是.o或者.obj

你又网抑云了,这到底是为什么呢……

因为编译只是将我们自己写的代码变成了二进制形式,它还需要和系统组件(比如标准库、动态链接库等)结合起来,这些组件都是程序运行所必须的。

链接(Link)其实就是一个“打包”的过程,它将所有二进制形式的目标文件和系统组件组合成一个可执行文件。完成链接的过程也需要一个特殊的软件,叫做链接器(Linker)

随着我们学习的深入,我们编写的代码越来越多,最终需要将它们分散到多个源文件中,编译器每次只能编译一个源文件,生成一个目标文件,这个时候,链接器除了将目标文件和系统组件组合起来,还需要将编译器生成的多个目标文件组合起来。

再次强调,编译是针对一个源文件的,有多少个源文件就需要编译多少次,就会生成多少个目标文件。

最后的重点:链接的作用是:把程序打包


Part 3:一个C语言的代码是怎么组成的

一个C语言的代码大概可以分为五块,分别是:

  • 预处理器指令
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释

其中,预处理器指令最好识别,他们的开头一定会出现#,例如这一句:

d4c93d87ab6bc4774f27b9806a1253b7.png

其次是函数,函数一般表示为关键字 函数名(),例如

4dd132414618dad1772e0f0825f6a825.png

哦,有的小可爱跑走了,因为他特别讨厌函数,嘤嘤嘤,这不是欺负伦家了嘛!

4778a5edbd8995d169b057a3770c5ee6.png

其实,在C语言中,函数只是把一些行为用大括号框在一起,取了个名字

就这?就这就这就这?

真的就这

而请你记住:main()这个函数是最特殊的函数,一切程序都是从main()函数开始

然后是变量,变量和函数长得很像,只不过是少了个()

再就是语句和表达式。语句和表达式就是上文提到的“行为”,而区分语句和表达式有一个很好的方法,我举个栗子

x + 3;
5 + 2;
7 + 8;
'a' - '0';

这些是表达式,他们一定能代表某一个具体的值

而看看这些东西:

x = 3;
y = 7;
z = 'a';

这些都是表达“一个变量等于某一个值”,他们是语句

而语句的左右两侧,都是一个表达式

是不是很懵?那就先不管区分

你会发现,C语言中不管是表达式还是值,都有一个共同的特点:结尾都必须有分号

这也是C语言的要求之一:每一个语句结尾必须有分号,每一个表达式的结尾也必须有分号

最后是注释,注释是为了解释你这个代码的作用,分为单行和多行

//这里是单行注释,双斜杠后面的内容在编译时会被忽略
/*
这里是多行注释,同样的,这里的内容也会被忽略
都是写着给你自己/别人理解的
*/

Part 4:输出

上一节的内容光讲不好理解,我们要放到实际的例子中去对比,暂时把他放一放

那么我们来看看上一个代码中,我们是如何让计算机在黑框框上显示Hello world!

其实就是这个函数printf()做到的

4a71e7d8d203a4e8edebd6613d830b0f.png

printf()这个函数可以输出引号内的内容(注意!是英文引号!所有的符号都得是英文的!)

比如我们换一个试试:

#include <stdio.h>
int main(){
	printf("知乎海王 txdy!我爱海王");
	return 0; 
}

试试这段代码会怎么样?(斜眼笑.png)

好啦好啦,放下你40m的大刀,再尝试用这个函数输出点不同的东西吧!

接下来,我来给你看看printf() 的一些“骚操作”,例如:换行

#include <stdio.h>
int main(){
	printf("知乎海王ntxdy!");
	return 0; 
}

看看会输出什么?

c3d77f5909e768d51378b8bc88310a3a.png

OHHHHHHH!他换行了!

其实,这是转义字符n的作用

在C语言的引号内(我们把它叫做字符串),+...被称为转义字符,他们可以把一些看不见摸不着的东西给输出出来,例如换行,下面是一些常用的转义字符

2f51946af25dc8624bec54cf394a264f.png

此外,你可以使用多条printf()来输出:

bb36601bc7f0d62e55a4a7cd7872461b.png

Part End:作业&笔记

笔记:

06886e815e5ad11c38da8e380f5f333c.png

推荐阅读:

《C Primer Plus》第一章内容,可以选择性的跳过

以及,尝试理解2.1~2.2的内容

作业:

尝试用printf输出自己的知乎账号名

尝试用printf输出这段话(方括号内表示特殊操作):

Scaft Datami Ley [换行] Timed [tab] Forinser
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值