一,彻底理解第一个C语言程序 Hello World

  对于初学者来说,第一个程序一般都是hello world,而且是照着书上一点一点敲的。所以,在初学者眼中,敲出来的第一个程序代码不过是一堆看不懂的英语。而事实上,C语言作为一门语言,是有语法的。所以这一节,我们以C语言最简单的一个程序为载体,初步了解C语言的语法,相信读者看了以后不用看书也能写出一个hello world程序。

  首先,我们先不说C语言,我们先从人类语言开始,假设我现在给你的任务不是让你用计算机输出一行hello world,而是让你找另一个人给你写一行hello world。这个任务你会怎么完成呢?

  显然,你会找个人对他说:“给我在纸上写一行hello world。”(假设他会无条件听你的话)

  好,很简单,这个任务就完成了。但是现在任务的完成对象并不是人,而是计算机,你需要按照它的语法对它说话。那么你能在敲代码的区域里打上“写一行hello world给我”吗?可以,前提是在前面打两个斜杠“//”。这两个斜杠的意思是在后面的东西是注释。计算机会忽略所有注释,因为注释是方便人阅读的。一般来说,注释默认写在被注释的语句或语段上面。

  还有一种注释方法是/*中间是要注释的内容*/

  两种注释方法的区别是,两个斜杠的注释只能管到一行的结束,而第二种注释可以自己随意选择起始和结束位置。所以在学语法的时候,注释可以忽略不计,因为注释对程序本身是没有作用的。一般来说,注释可以加在代码的任何地方,但是为了美观还是要规范写注释。下面是一个带注释的hello world程序。

#include<stdio.h>
int main(void)
{/*下面要输出hello world*/printf("hello world");return 0;} 

  那么问题来了,那我直接在代码区域写

printf("hello world");
这样不就行了吗?然后编译,运行。会发现编译器会报错。(补充一句,C语言每句话结束都要加分号,这是语法,如果漏加会报错,不再赘述。而且,所有语法中的符号必须用英文格式输入,比如;;前者会报错)既然报错了,说明其他语句也是有用的,那么具体作用是什么?下面开始讲解。
首先每个c程序必须有一个主函数框架。
int main(void)
{}

在主函数框架里就是你要编写的内容,相当于告诉计算机:“这里面就是你要执行的命令。“

那么return 0;这一句是干什么的呢?它的意思是让主函数正常结束。一般来说这句话都是写在最后。如果你把这句话写在printf前面,还没等输出,程序已经结束了,所以就不会有东西输出。也就是说程序的一般就是

int main(void)
{return 0;
}

所以hello world 的主程序就是

int main(void)
{printf("hello world");return 0;
}

你会发现,即使这样写完,再编译还是错的。为什么呢?有没有发现在开头的代码里,第一行还有#include<stdio.h>这句话又是干什么的呢?

那么你有没有想过一个问题,既然计算机听不懂你说“输出一行hello world”,它凭什么就能听懂printf("hello world")?所以,相信你已经猜到这句话是什么意思了。这句话就是教会计算机听懂printf。stdio.h是头文件,它是一个函数库:标准输入输出库(standard input output的缩写)。.h是后缀名,头文件(head file)的后缀名一般都是.h。那么把stdio.h给include进来的这句话叫做声明语句。声明语句都以#开头,标准自带库文件要用尖括号。所以是#include<stdio.h>而且值得注意的是,声明语句结尾不用分号。

因此,一个hello world 程序就很自然的出来了。

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

这样就可以编译运行了。在明白了每句话的意思的基础上,读者可以自行编写一遍。

 

//int main(void) 有很多不同的形式,比如int main() int main(int argc,char *argv[]) 暂时不需要知道其中的区别

转载于:https://www.cnblogs.com/itlqs/p/4858650.html

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

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

相关文章

es6的箭头函数

1.使用语法 : 参数 > 函数语句; 分为以下几种形式 :  (1) &#xff08;&#xff09;&#xff1d;&#xff1e;语句 ( )&#xff1d;&#xff1e; statement 这是一种简写方法省略了花括号和return 相当于 &#xff08;&#xff09;&#xff1d;&#xff1e;&#xff5…

三级分类菜单的数据库设计

http://www.imooc.com/article/285246?block_idtuijian_wz 最近在设计一款进销存系统的时候&#xff0c;遇到一个分类的设计问题&#xff0c;就是如何将分类设计成数据库里的表&#xff0c;怎么样设计才比较灵活&#xff1f; 举个例子&#xff0c;一级分类&#xff1a;生鲜类&…

双向环形链表

#ifndef DULIST_H #define DULIST_H /* 线性表的双向链表存储结构 */ typedef void * elemtype; typedef struct dulnode { elemtype data;struct dulnode *prior,*next; }dulnode,*dulinklist; /*带头结点的双向循环链表的基本操作(14个) */ void list_init(dulinklist *l)…

linux服务器加入windows域时报错Ticket expired

[rootrusky]# net ads join -U administrator Enter administrators password: kinit succeeded but ads_sasl_spnego_krb5_bind failed: Ticket expired Failed to join domain: failed to connect to AD: Ticket expired使用data命令查看时间&#xff0c;发现linux机器与wind…

机器学习问题解答

1、如何从字面正确理解weight decay的含义&#xff1f;它为何相当于L2范式正则化&#xff1f; 2、L2范数正则化对应贝叶斯统计里的哪个概念&#xff1f; 解答&#xff1a;http://blog.csdn.net/zouxy09/article/details/24971995/&#xff1b;http://t.hengwei.me/post/%E6%B5%…

搜索和数据分析引擎

https://www.elastic.co/cn/products/elasticsearch

mysql查询区分大小写

Mysql默认查询是不分大小写的&#xff0c;可以在SQL语句中加入binary来区分大小写。 binary不是函数&#xff0c;是类型转换运算符&#xff0c;它用来强制它后面的字符串为一个二进制字符串&#xff0c;可以理解为在字符串比较的时候区分大小写。 SELECT * FROM t_resource_inf…

(二)单元测试利器 JUnit 4

JUnit 深入 当然&#xff0c;JUnit 提供的功能决不仅仅如此简单&#xff0c;在接下来的内容中&#xff0c;我们会看到 JUnit 中很多有用的特性&#xff0c;掌握它们对您灵活的编写单元测试代码非常有帮助。Fixture 何谓 Fixture&#xff1f;它是指在执行一个或者…

.net平台的MongoDB使用

网址&#xff1a;http://www.cnblogs.com/skychen1218/p/6595759.html 前言 最近花了点时间玩了下MongoDB.Driver&#xff0c;进行封装了工具库&#xff0c;平常也会经常用到MongoDB&#xff0c;因此写一篇文章梳理知识同时把自己的成果分享给大家。 本篇会设计到Lambda表达式的…

2018程序员最佳ssh免费登陆工具

https://www.jianshu.com/p/b29b894aa60f Linux 终端 Screenshot from 2018-09-15 00-12-41.png PAC Screenshot from 2018-09-15 00-12-00.png 参考资料 讨论qq群144081101 591302926 567351477本文涉及的python测试开发库 谢谢点赞&#xff01;本文相关海量书籍下载 Wind…

Android Studio快捷键(MAC版)

用了AS一段时间了&#xff0c;感觉还是挺好用的&#xff0c;虽然还是有些小问题&#xff0c;但好处还是很明显的。。。 从Eclipse 转用AS最难受的估计就是快捷键了&#xff0c;整了好久才基本把个人在Eclipse上使用的快捷键给找差不多&#xff0c;但还是有些快捷键木有&#xf…

学习flex布局(弹性布局)

Flex是Flexible Box的缩写&#xff0c;意为弹性布局。是W3C早期提出的一个新的布局方案。可以便捷的实现页面布局&#xff0c;目前较高版本的主流浏览器都能兼容&#xff0c;兼容情况如下&#xff1a; Flex在移动端开发上已是主流&#xff0c;比如在h5页面&#xff0c;微信小程…

php创建无限级树型菜单以及三级联动菜单

http://www.php.cn/php-weizijiaocheng-373500.html 这篇文章主要介绍了php创建无限级树型菜单 &#xff0c;主要使用的是递归函数&#xff0c;感兴趣的小伙伴们可以参考一下 写递归函数&#xff0c;可考虑缓存&#xff0c;定义一些静态变量来存上一次运行的结果&#xff0c;多…

oracle数据库用脚本运行SQL语句

1. 在同一个目录下创建 runBatch.bat sqlplus sys/sangfororcl as sysdba sql.txtpausesql.txt 要执行的SQL语句 2. 双击runBatch.bat转载于:https://www.cnblogs.com/ddmiao/p/3654227.html

使用Docker镜像和仓库

为什么80%的码农都做不了架构师&#xff1f;>>> Docker镜像 由文件系统叠加而成最底端第一层是引导文件系统bootfs&#xff0c;类似grub镜像第二层是root文件系统rootfs列出镜像 huangyiHP ~ % sudo docker images REPOSITORY TAG IMAGE …

ip_forward

Linux系统缺省并没有打开IP转发功能&#xff0c;要确认IP转发功能的状态。可以查看/proc文件系统&#xff0c;使用下面命令&#xff1a; cat /proc/sys/net/ipv4/ip_forward如果上述文件中的值为0,说明禁止进行IP转发&#xff0c;如果是1,则说明IP转发功能已经打开。要想打开I…

C++primer plus第六版课后编程题答案8.3(正解)

在百度知道里面得到了正确的答案 http://zhidao.baidu.com/question/198940026560129285.html?quesup2&oldq1 #include<iostream> #include <string>//出问题时&#xff0c;使用的是cstring,但换成string一样出问题 using namespace std; struct stringy{char…

WordPress后台删除不需要的侧边栏菜单

https://www.ludou.org/remove-admin-menu-in-wordpress.html function remove_submenu() {// 删除"设置"下面的子菜单"隐私"remove_submenu_page( options-general.php, options-privacy.php );// 删除"外观"下面的子菜单"编辑"remov…

CSS 实例

CSS 实例 CSS背景 设置页面的背景颜色 设置不同元素的背景颜色 设置一个图像作为页面的背景 错误的的背景图片 如何在水平方向重复背景图像 如何定位背景图像 一个固定的背景图片&#xff08;这个图片不会随页面的其余部分滚动&#xff09; 在一个声明的所有背景属性 高级的背景…

通过ajax提交到url路由

$regBoxform.find(button).on(click, function(){/*通过ajax提交请求*/$.ajax({type:post, /*用post 方式提交*/url:/user/register, /*提交到api的指定路由路径*/dataType: json,data:{username: $regBoxform.find([name"username"]).val(),password: $regBoxform.f…