C语言的组成

大家都在学习C语言,那大家有没有想过C语言是由什么组成的?
我所理解的就是C语言是由若干文件构成,比如在刚开始写代码时就必须包含相应的头文件,而文件又由若干函数组成,函数分为库函数和自定义函数,函数有函数头和函数体。

函数头:由四部分组成 返回值类型 函数名 ()【小括号是函数的标志】 以及()里存放的形参。

函数体:{}【花括号是函数体的标志】+语句

语句有分为注释语句、定义语句、执行语句

注释语句:/*…**/为读者能够很好的理解所写代码做的一些解释,不编译执行。

sum(int a,int b)/*求和函数用来计算a加b的和*/

定义语句:一般放在函数的第一行,为变量分配相应的存储空间,编译时就被执行掉了

int a

注意:上面这个代码是错的,因为没有加分号,分号是语句的标志,只要是语句末尾一定不要忘记加分号。

执行语句:就是对数据所做的动作,也可以这么理解,除过上面所提这两者语句外,其他语句都为执行语句

数据与数据类型

C语言的数据类型有四大类,分别为基本类型(整型、实型、字符型、枚举),构造类型(数组类型、结构体类型、共用体类型)、指针类型(*)、空类型(void)。

数据也分为四大类,分别是常量、变量、表达式、函数(调用具有一定功能的函数作为运算对象)

常量:值不发生变化的量。

变量:值随时随地改变的量

表达式:用运算符将数据连接起来的合法式子

常量又分为整型常量、实型常量、字符型常量、字符串型常量

整型常量:三种形式(十进制、八进制、十六进制)

实型常量:两种形式(小数形式、指数形式)

小数形式:由数字和小数点组成(123.8 .456 0.458都是合法的实型常量 )

指数形式:用“E“或“e”后紧跟一个整数表示以10为底的幂数(1.23E+5)

注意:字母E或e前后必须都要有数字,且后面必须是整数(1.5E不合法)
字母E或e的前后及各个数字之间不能有空格

字符型常量:四种形式(常规、转义、八进制、十六进制)【单引号是字符的标志】

常规:一对单引号括一个(必须是一个)字符(‘A’)

转义:为什么需要转义,键盘上的一些按键(TAB等)不是一个单一的字符,只有通过\来进行转义才可以表达这些按键的控制功能(‘\n表示n不再是字符n而是换行’)

八进制:‘A’等价‘\101’

十六进制:‘A’等价‘\x41

字符串常量:由一对双引号括起来的若干(0个或以上)个字符(“如ASD”)【双引号是字符串的标志】

注意:每一个字符串常量都有一个字符串结束符“\0"

常量必须存放到变量中,因为只有变量才会为其分配相应的存储空间。那么问题来了,C语言没有字符串变量,现在字符串常量该如何存储到计算机当中呢?

C语言提供了两种途径来进行字符串常量的存放,一是字符数组、二是字符指针。

变量:用来存放常量
变量定义格式:数据类型名 变量名列表
变量的使用规则:先定义后使用,变量名属于用户自定义标识符,应当遵守用户标识符的命名规则
在同一函数体{}中不能定义同名变量
同时定义多变量需用逗号分隔
变量可以赋初值(初始化)无初值为随机值

标识符

有了变量那么在我们定义变量给变量取名字时需要遵循什么规则呢?
在C中标识符分为以下三类

保留字(关键字)
保留字总共32个,具有固定的含义

预定义标识符:预先定义并具有特定含义的标识符(比如 scanf printf)

用户自定义标识符:由用户根据需要定义的标识符如(变量名、数组名、函数名等)

标识符的命名规则:字母下划线开头,后面为字母数字下划线

表达式

C语言有极其丰富的运算符,导致有不同的表达式。那么什么叫做表达式呢?

表达式:用运算符将数据连接起来的合法式子(单独的常量、变量、函数调用都是C语言合法表达式)

运算符:具有一定运算功能的符号,具有三个属性 功能、优先级、结合性(运算方向)

表达式求值:挑运算符先计算优先级高的,同级情况下考虑结合性

1、算数运算符及算数表达式
算数运算符:+、-、*、/、% (加减四级 乘除求余三级)

注意:%两边运算对象必须为整型 如7.2%3、4/3.0都是不合法的表示
求值方法:先忽略负号不计求出余数,再将所得余数的符号定成与被除数相同的符号

17%3=2
17%-3=2
-17%3=-2
-17%-3=-2

2、赋值运算符及赋值表达式
优先级14级 结合型(右)

格式:变量名=表达式

赋值运算符的功能:将表达式的值赋给(“=”)左边的变量【如a=3+2先计算3+2为5然后将5赋给变量a】

凡是表达式都有一个唯一确定的值
赋值表达式的值就是赋值运算符左边变量的值

a=b=c=1+3 /* +优先级高于=  先计算1+3结果为4,将4赋给c 等价于a=(b=((c=1+3)))*/

注意:赋值运算符左边只能是一个变量,右边为任意合法表达式即可
实型数据赋给整型变量时,实型小数舍去,整型数据赋给实型变量时系统自动将整型数据转化为实型数据

a+b=3  /*非法表达式 */
a=6 /*合法表达式 */

3、复合赋值运算符
10种(+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=)14级 结合性(右)
注意:复合赋值运算符的两个运算符中间不能有空格

a/=7+3/* 等价于a=a/(7+3)意思就是说如果右边为表达式的话就加小
括号否则会出现逻辑错误*/

4、自增自减运算符
2级 结合性(右)

操作对象只能用于变量不能用于常量或表达式
求值方法如下

  如int a=3 则表达式的值分别为|表达式的值| 变量的值 |a++|    3    |   4     |  /* 说明:++、--在前,先给变量加减一,在给表达式标值 */++a|    4    |   4     |  /*       ++、--在后先给表达式标值 ,在对变量加减一*/a--|    3    |   2     |--a|    2    |   2     |

5、逗号运算符及其表达式(顺序求值表达式)
格式:表达式1,表达式2,表达式3,……,表达式n

功能:逗号表达式的值就是表达式n(最后一个表达式的值)求值顺序是从左到右依次求解

x=(y=3,y+1) /*首先将3赋给y,然后执行y+1操作,将结果4赋给x  *//*注意:x赋值右边的表达式要用括号括起来,因为逗号运算符的优先级别低于赋值运算符 */

6、强制类型转换(显式转化)
格式:(类型名)表达式 或(类型名)(表达式)

利用强制类型转化运算符可将一个表达式的值转化为指定的类型

float x=123.45,y=0.5;/* 注意这种格式是错的int(x)*/
(int) x+y=123.5       /*先将x转化为int型123,在与y求和结果为123.5*/
(int)(x+y)=123        /* 先计算x+y的值为123.95然后转化为整型结果为123*/

进行强制类型转换,得到的是一个中间值,而原来表达式或变量的类型未发生改变
如若变量x为int型,则表达式(float)x的结果是一个float型,但是x还是int 型

总结:以上是C语言的基本语法和基础,知识点虽然有点枯燥无味,但是是我们后面要学的基本结构的基础,这一部分内容对大家学好C语言很重要,希望大家可以把基础打扎实,在学习的路上继续努力前行。

C语言基础语法(初学者必看)相关推荐

  1. STM32中C语言知识点:初学者必看,老鸟复习(长文总结)

    说在前面的话 一位初学单片机的小伙伴让我推荐C语言书籍,因为C语言基础比较差,想把C语言重新学一遍,再去学单片机,我以前刚学单片机的时候也有这样子的想法. 其实C语言是可以边学单片机边学的,学单片机的 ...

  2. C语言入门,C语言学习方法,初学者必看

    学C语言的朋友应该首先了解C语言关键的核心概念(结构化.三个执行流程.优先级.指针.文件.共用体.函数.作用域.重载等 ),只有弄明白了这些才能在今后的学习中游刃有余的把握C语言的精髓.这几个概念就像 ...

  3. 微信小程序的基础语法(必看)

    1. 简述微信小程序的运行机制 热启动 :假如⽤户已经打开了某个⼩程序,在⼀定时间内再次打开⼩程序的话,这个时候我们就不再需要重新启动了,这需要把我们的后台打开的⼩程序切换到前台来使⽤. 冷启动:⽤户 ...

  4. Go语言基础语法讲解与学习

    Go语言基础语法讲解与学习 1 Go语言基础知识介绍 ​ 介绍Go语言之前,我们先了解一下有哪些开源项目是Go语言开发的,其中就包括 Docker.Go-Ethereum.Thrraform 和 Ku ...

  5. JavaScript基础教程——入门必看篇

    JavaScript他是一种描述性语言,其实他并不难学,只要用心学,一定会学好,我相信大家在看这篇文章的时候,一定也学过HTML吧,使用JavaScript就是为了能和网页有更好的交互,下面切入主题. ...

  6. lua菜鸟教程_初学者必看:Lua入门学习教程

    Lua入门学习教程是本文要介绍的内容,主要是来对Lua入门的一个学习,Lua是一个被设计成用于扩展C/C++编程的轻量级脚本语言.不幸的是,网上很少有关于这个语言的在线教程.我主要通过阅读其源代码来了 ...

  7. 【Go编程语言】 Go语言基础语法

    Go语言基础语法 文章目录 Go语言基础语法 一.注释 1.单行注释 2.多行注释 二.变量 1.变量的定义 2.变量的初始化 3.理解变量(内存地址) 4.变量交换 5.匿名变量 6.变量的作用域 ...

  8. 一起学Go吧! Go语言基础语法篇二

    文章目录 前言 Go 语言指针 Go语言结构体 Go语言切片(Slice) Go 语言范围(Range) Go 语言Map(集合) Go 语言类型转换 Go 语言接口 Go 错误处理 Go并发 通道( ...

  9. 视频教程-Python零基础入门高薪必看动画课程-Python

    Python零基础入门高薪必看动画课程 从事多年的Web应用开发,拥有10余年一线开发经验和教学经验.曾在中国银行从事数据采集服务,现专注于Python教学相关工作.参与过O2O外卖平台系统.微信商城 ...

  10. Go语言基础语法--注释、基础结构2

    章节 GO语言基础语法--注释.基础结构(重要) 1.GO语言基础语法---注释.基础结构 //程序所属的包,且必须在源文件代码第一行 package mainimport "fmt&quo ...

最新文章

  1. 「AI不惑境」残差网络的前世今生与原理
  2. Spring Cloud构建微服务架构:分布式配置中心(加密解密)
  3. 如何关闭jdk自动更新提示
  4. python中变量名存储在哪里_python – 如何在内部存储和映射变量名称?
  5. python中range语法
  6. Android开始中的OOM异常
  7. 自动聊天机器人项目班
  8. ajax获得excel文件流在前端打开_Javascript前端开发:jsonp的原理你真的懂吗?
  9. 支持drupal的空间
  10. AOP 面向切面编程、拦截器
  11. javascript的offset、client、scroll使用方法
  12. 源码安装lamp以及论坛
  13. 大麦网抢票python代码_damai_ticket
  14. windows虚拟机dhcp服务器,无法访问虚拟机中的DHCP服务器
  15. App Links(APP关联)
  16. MyApps平台为政企数据保驾护航,筑牢办公安全防线
  17. 使用React创建一个web3的前端
  18. cad渐变线怎么画_CAD中的图案渐变功能怎么使用 涨知识了
  19. 【代数之美】线性方程组Ax=0的求解方法
  20. 同济大学符长虹教授作“基于计算机视觉的无人飞行器自主导航研究与应用”为题的报告

热门文章

  1. 初学操作系统概论小结
  2. 【实战系列】intel 8代I5 8400+H310完美装WIN7系统
  3. MaxScript入门指引系列(五)数组和Visual MaxScript editor
  4. linux下ftp搭建流程
  5. Python 函数两个列表对应相乘
  6. Javaweb google身份宝验证
  7. 使用Photoshop给Premiere批量添加对白字幕听语音 |浏览:25974|更新:2013-12-23 23:18|标签:photoshop premiere 使用Photoshop给Pre
  8. 定制材料 GPTMS修饰的纳米二氧化硅(GPTMS-SiO2)/C18键合纳米金修饰二氧化硅颗粒/二氧化硅修饰咪唑型离子液体
  9. STM32__04—PMW呼吸灯
  10. 宝宝为什么不吃奶粉,奶爸必读文章