C系列(1)----C语言基本概念
经过几个月对C语言的学习,施律.打算对c语言的内容通过博客的形式作一个较为详细的讲述。本系列的博客有20余篇(暂定)。2-3天更新一篇。篇与篇之间的联系还是比较大的,会出现前后穿插的现象。希望正在学c的小伙伴或者已经进攻其他技术的大佬能给予施律.多多的支持!本篇博客的难度系数较低,但不用担心后续的内容将会更加充实更加精彩!话不多说,这就开始今天的讲解----C语言基本概念。
目录
简单的C程序
编译和链接
注释
变量和赋值
易错但极易掌握的标识符
关键字
简单的C程序
world.c
#include <stdio.h>int main(void)
{ printf("Hello world!");return 0;
}
这是一个简单的C程序,看似简单实则其中蕴含的内容却并不简单(编译和链接)。
#include <stdio.h>是必不可少的,它包含了C语言标准输入/输出库的相关信息。main函数中的第一行代码是你想表达的内容。printf函数来自标准输入/输出库(不是这篇的主要内容将会在后续内容中介绍),可以产生格式化输出。代码\n是一个转义字符,告诉printf函数执行完消息显示后要进行换行操作。第二行代码return 0;表明程序终止时会向操作系统返回0。(return 0也可以写成exit(0)哦,这两种是完全等价的)
有的程序猿心中或许有这样的疑惑:我在平常打代码的过程中忽略了return 0;程序依旧能运行,那return 0;应该不是必需的吧。 确实,return语句并不是必需的;如果没有return语句,程序一样会终止。在c89中,返回给操作系统的值是未定义的。在c99中,如果main函数声明中的返回类型是int,程序会向操作系统返回0;否则程序会返回一个不确定的值。
编译和链接
上述说到简单的C程序并不简单,实际上是因为编译和链接。初级程序猿在敲代码的过程中可能不会去思考机器是如何运行的。首先,需要生成一个含有程序world.c的文件。当然,文件的名字是无关紧要的,但是编译器通常要求带上文件的扩展名.c。
对于C程序来说,其转化为机器可执行的形式通常包含三个步骤,即预处理、编译、链接。
预处理:首先程序会被送交给预处理器。预处理器执行以#开头的命令。预处理器有点类似于编译i,它可以给程序添加内容,也可以对程序进行修改。 |
编译:类似于人类中的翻译官,这只不过是讲程序中的转化为机器语言。 |
链接:把由编译器产生的目标代码和所需的其他附加代码(主要是库函数)整合在一起,这样才最终产生了完全可执行的程序。 |
注释
先来说下C89的风格/* */。符号/*标记注释的开始,而符号*/则标记注释的结束。例如:
/* I am iron man. */
注释能出现在程序中的任何位置上。当然,注释并不只有消除代码的作用,它还能对你所写的代码作个讲解,这类注释也被称为"翼型注释"。
C89的注释风格还是由潜在危险的,如果忘记终止注释可能会导致编译器忽略重要的一部分,请观看以下代码:
printf("I "); /* balabala.....
printf("am ");
printf("iron "); /* balabala */
printf("man.");
该段代码最终显示结果是I man.。因为在第一条注释中遗漏了结束标语,所以编译器忽略掉了中间的两条语句。
C99提供了另一种注释,也是现在各种编译器所使用的,以//开始:
//I am iron man.
这种风格的注释会在行末自动终止。如果要取消任意行的注释,只需要在该代码行前加上//。这类注释很好地避免了C89中出现的情况。
变量和赋值
大多数程序在产生输出之前往往需要执行一系列计算,因此需要在程序执行过程中有一种临时存储数据的方法,这些存储单元被称为变量。本篇博客只讲述int类型变量和float类型变量。
int型变量可以存储整数,如0、、44、-2555。但是存储的数是受限制的,最大的整数通常是2147483647。 |
float型变量可以存储比int型变量大很多的数值。而且,float型变量可以存储带小数位数,如66.666f.(当讲一个常数赋值给float型变量)但float型变量在进行算数运算时会比int型慢;更重要的是float型变量所存储的数值往往知识实际数值的一个近似值。 |
变量通过赋值的方式获得值。例如:
a = 2;
b = 3;
c = 4;
把2 3 4分别赋值给a b c。
变量在赋值或以其他方式使用之前必须先声明。也就是说下面的例子是不行的哦。
a = 2;
int a;
易错但极易掌握的标识符
在编写程序时,需要对变量、函数、宏和其他实体进行命名,这些名字就叫做标识符。很多新手程序猿在看书的过程中并没有注重书中的细节或者听课没听到重点,就会在平常练习标识符类题目中屡次碰壁。
在c语言中,标识符可以含有字母、数字和下划线(但关键字不能作为标识符来使用,比如int short inline这些关键字),但是必须要以字母或者下划线开头哦。看下面例子:
A、B选项都是以字母开头,D选项是以下划线开头,然而C选项是以数字开头的,故C错。这类题目其实很简单的,只要掌握方法就是来一题灭一题。
但C语言是区分大小写的,也就是说,在标识符中C语言区别大写字母和小写字母。例如,下列标识符是不同的:
shilv_
Shilv_
shIlv_
大小写不同,其所含的意义也不同。
有的程序猿心中或许有这样的疑惑:标识符的长度有没有限制呢?答案是有,但不完全有!这跟编译器有关,在这里并不细讨。
关键字
本篇博客主要介绍了int类型和float类型,剩下的关键字将在以后的博客中一一分享给大家。
感谢能阅读到这的你,如果觉得这篇博客对你有帮助的话,请留下你的点赞与收藏哦!未来的几个月里施律.将会陪你们一起翻越C语言这座大山!
C系列(1)----C语言基本概念相关推荐
- python123查找指定字符输入m_大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编....
Presentation on theme: "大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编."- Presentat ...
- c语言字符变量grade如何定义,c语言基础概念笔记
最近看到自己之前刚开始学习的时候记的一些笔记就稍微整理了一下 第一章 c语言注释 概念:给代码进行解释说明 作用:加强程序代码的可读性和维护性 /*:多行注释 //:单行注释 变量和基本数据类型 变量 ...
- java 注解 demo_JAVA语言注解概念使用及Demo讲解
本文主要向大家介绍了JAVA语言注解概念使用及Demo讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. java注解 概念 Java提供了一种原程序中的元素关联任何消息和任何元数据 ...
- dart系列之:dart语言中的特殊操作符
dart系列之:dart语言中的特殊操作符 文章目录 简介 普通操作符 类型测试操作符 条件运算符 级联符号 类中的自定义操作符 总结 简介 有运算就有操作符,dart中除了普通的算术运算的操作符之外 ...
- c语言从入门到精通_C语言基本概念(上)【C语言入门到精通】
C语言基本概念 Syntactic sugar causes cancer of the semi-colons.[0] 码字不易,对你有帮助 点赞/转发/关注 支持一下作者 微信搜公众号:不会编程的 ...
- NumPy 快速入门系列:应用统计学基础概念、相关统计指标与NumPy的实现
NumPy 快速入门系列:应用统计学基础概念.相关统计指标与NumPy的实现 前言: 统计学导论: 统计学定义: 统计学分类: 统计学基本概念: 统计过程: 统计指标与NumPy: 用 Python ...
- python中动态语言静态语言的定义_作为程序开发,你所需要知道的编译型与解释型、动态语言与静态语言、强类型语言与弱类型语言的概念以及区别...
作为程序开发,你所需要知道的编译型与解释型.动态语言与静态语言.强类型语言与弱类型语言的概念以及区别! 在各式各样的开发过程当中,我相信各位开发小伙伴在开发过程中并没有太关注什么是解释性语言和编译性语 ...
- 单片机c语言编程入门下載,系列单片机C语言编程入门.pdf
系列单片机C语言编程入门.pdf 本文由c h e n j u n j u n j u n 3贡献 p d f 文档可能在WAP端浏览体验不佳.建议您优先选择TXT,或下载源文件到本机 查看. 维普资 ...
- JAVA数组概念与C语言数组概念区别
C语言数组概念: 数组是一个集合数据类型,它由多个元素组成,每个元素都有相同的数据类型,占有相同大小的存储单元,且在内存中连续存放.每个数组都有一个名字,数组中的每个元素都有一个序号(都成为下标),表 ...
最新文章
- oracle本地连接地址,关于Oracle本地连接出现与监听有关的问题的解决方法探讨,oracle本地连接...
- Kubernetes — 安装 Dashboard UI
- 【工具使用系列】关于 MATLAB 电路与系统分析,你需要知道的事
- java 反射 静态域_java 内存 堆 栈
- springboot集成spring security安全框架入门篇
- MySQL学习笔记07【事务、用户管理和权限管理】
- 蓝桥杯 递增三元组 二分
- Java线程局部变量ThreadLocal
- Java中proc是什么意思,Java PatientProcedureVo.setSignifProc方法代码示例
- 《那些事之Log4j》什么是log4j?【专题一】
- 魅族 计算机 隐藏,不知道你们发现了么,魅族Flyme6 超好用的隐藏功能
- 服务器进pe iso安装系统教程,iso系统怎么安装( pe怎么安装iso原版镜像)
- 微信模板消息html,微信推送模板消息,偶发出现报错errcode
- 这些中国扶贫路上的“组合拳”,你见过吗?
- 上海会计师事务所选哪家?
- docker流媒体服务器性能,利用docker镜像搭建流媒体服务进行rtmp推流及点流(rtmp,hls,http-flv)测试...
- 一 Django模型层简介
- 计算机地图制图的优势,计算机地图制图
- PKUSC 2022游记
- 乐高机器人纲要_人工智能与机器人课程纲要
热门文章
- Opencv 三对角线矩阵(Tridiagonal Matrix)解法之(Thomas Algorithm)
- kylin 权限管理
- 【SSO单点登录】ticket+token+redis 实现sso单点登录 防重放、防盗用、防篡改
- CSS高级选择器+块级元素,行内元素的特点+CSS定位+logo的做法
- Python运用openpyxl计算excel表格中的欧氏距离
- 程序员,如何打破职业瓶颈期?
- NewH3C——ACL
- vue v-else中使用document.getElementById获取不到值的问题
- 网络安全方面学习笔记(持续更新...)
- AR引擎技术选型和使用实现方案