在上一篇文章《快速上手系列-C语言之基础篇(一)》中写了关于C语言的程序结构,关键字及控制语句。本篇主要写写C语言中数据类型,以及运算符相关方面的知识。

一、变量与常量

1、常量:在程序运行过程中,其值不能被改变的量(注意:不能反过来说),这些固定的值,又叫做字面量。常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

整型 100,180,-100,0实型 3.14 , 0.125,-3.789字符型 ‘a’,‘b’,‘6’字符串 “a”,“abc”,“123”常量的定义方式:

使用 #define 预处理器。 // #define MY_NUM 10使用 const 关键字。 // constchar ch = 'a';

2、变量:其值可以改变,变量名只能由字母、数字、下划线组成,第一个字必须为字母或下划线,变量在编译时为其分配相应的内存地址。

二、C语言数据类型:

1、整型数据

整型常量的表示方法:十进制;八进制以数字0开头,如0123;十六进制以0x开头,如0x12整型变量分为有符号/无符号基本整型 (unsigned/signed) int有符号/无符号短整型 (unsigned/signed) short(int)有符号/无符号长整型 (unsigned/signed) long (int)

2、实型数据

实型常量实型也称为浮点型,实型常量也称为实数或者浮点数十进制形式:由数字和小数点组成:0.0、0.12、5.0指数形式:123e3代表123*10的三次方实型变量单精度(float)和双精度(double)float型: 占4字节,7位有效数字(十进制)Double型: 占8字节,15~16位有效数字 (十进制)包含小数点却不以f结尾的常量是double

3、字符数据

字符常量:用单引号括起来,如:‘a’、‘b’等。转义字符:以反斜杠“\”开头,后跟一个或几个字符。如‘\n’,‘\t’等,分别代表换行,横向跳格。字符变量:用char定义的变量只能存放一个字符常量;每个字符变量被分配一个字节的内存空间;字符值以ASCII码的形式存放在变量的内存单元中

例子说明:ch = 'a'; ch变量中存放的是字符 'a' 的ASCII :97, 即 ch=97 跟 ch='a' 在本质上是一致的。4、字符串是由双引号括起来的字符序列,如“haha”、“hello world”,“123”等都是合法的字符串常量。注意:字符串常量和字符常量是不同的

三、数据类型的转换

数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题.转换的方法有两种

1、自动转换:遵循一定的规则,由编译系统自动完成。转换方向 :

数据类型转换的规律:占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。

来看个例子:

从这个例子可以看出:a为char型,求其类型大小为1,而在sizeof(a+a),进行a+a计算的时候自动转换为int行,所以sizeof(a+a)为4,sizeof(a+1.2),其中1.2默认为double类型(之前说过,1.2f为float型,不加f默认为double型),a在与double型进行计算时自动转换为double型,故sizeof(a+1.2)为8;2、强制类型转换:(类型说明符) (表达式), 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型,如:(float)a; // 把a的值转换为实型(int)(x+y); // 把x+y的结果值转换为整型注意:类型说明符和表达式都必须加括号;无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据定义的类型例子1-类型不改变:

例子2-数值不改变 :

四、运算符与表达式

1、数据在运算中使用的运算符包括:运算符的种类、优先级和结合性

2、C语言常见的运算符:

算术运算符 (+、-、*、/、%、++、--)

这里需要注意一下“++”和“--”这两种自增/自减运算符,虽然,它们放在变量前面/后面,作用都是使变量的值增1或减1,但是还是有区别的:

++i,--i(先加/减,后使用)i++,i-- (先使用,后加/减)

(1)自加/自减运算符在变量后面,表示先使用,后加/减,举例说明一下:

例子当中,先将a的初始值为10,将a的值赋给b,即b的值为10,然后a进行自加运算,自加后a的值变为11,这就是先使用,后加/减;

(2)自加/自减运算符在变量前面,表示先加/减,后使用,举例说明一下:

例子当中,先将a的初始值为10,a先进行自加运算,自加后a的值为11,然后将a的值赋给b,即b的值为11,这就是先加/减,后使用;

关系运算符 (>、<、==、>=、>、&、|、 ~ 、∧ )赋值运算符 (=、及其扩展赋值运算符)条件运算符 (?:)条件运算符,是一种三元运算符,形式为: (a > b) ? a : b;说明:先判断(a > b)是否为真,若为真,表达式取值a,否则取值b;条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符;比如 max = ( a > b) ? a : b;可以去掉括号而写为 max = a > b ? a : b;“?” 和“ :”是一对运算符,不能分开单独使用。

举个简单例子来了解一下条件运算符的用法:

例子当中,将 ( a < 1 ) ? 100 : 200 表达式的值赋给b,a的值为5,条件 a < 1为假, 因此表达式( a < 1 ) ? 100 : 200取值是200,即b为200;

后面一句 b = ( a == 5 ) ? 100 : 200;a初始值为5,条件 a == 5 为真,因此表达式 ( a == 5 ) ? 100 : 200 取值100,即b为100.

逗号运算符 (,)指针运算符 (*和&)求字节数运算符(sizeof( ))强制类型转换运算符((类型))分量运算符(.->)下标运算符([])其他( 如函数调用运算符())

用算术运算符将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C算术表达式.运算对象包括常量、变量、函数等(函数指的是函数的返回值)

例如: a*b/c-1.5+'a′

另外说一下复合的赋值运算符,就是在赋值符“=”之前加上其它二目运算符构成复合赋值符:+=,-=,*=,%=,<<=,>>=,&=,^=

a += 10 //等价于 a = a + 10;a *= b+10 //等价于 a = a * (b+10);

五、运算符的优先级

运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。

例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。

在判断同优先级运算符计算顺序时,要注意结合性,详细的优先级及结合性请参考以下表格:

今天就写到这里,下面来一条华丽的分割线

接下来开始写C语言中数组相关的内容,想了解的小伙伴们,可以添加关注。

举报/反馈

c语言 字符串转运算符,快速上手系列-C语言之基础篇(二)数据类型与运算符...相关推荐

  1. Python快速上手系列--字典--详解实战篇

    本章字典篇,比较的重要,所以有比较多的练习小实战,一起来看看吧. 字典 什么是字典: 字典:是一系列的键值对,每一个键都会有对应的一个值关联,它们可以是数字 ,字符串,列表以及字典本身.用{}来表示. ...

  2. thinkcmf5调用指定分类的二级_Tengine快速上手系列教程amp;视频:基于Python API的图片分类应用入门丨附彩蛋...

    前言:近期,Tengine团队加班加点,好消息接踵而来,OpenCV 4.3.0发布,OPEN AI LAB AIoT智能开发平台Tengine与OpenCV合作共同加速边缘智能,Tengine再获业 ...

  3. spring cloud 快速上手系列 -> 02-配置中心 Config -> 022-Config客户端

    spring cloud 快速上手系列 系列说明:快速上手,一切从简,搭建一个简单的微服务框架,让新手可以在这个基础框架上做各种学习.研究. 02-配置中心 Config 022-Config客户端 ...

  4. 【快速上手系列】使用Springboot集成Swagger2的简单使用测试

    [快速上手系列]使用Springboot集成Swagger2的简单使用测试 简介 Swagger2是为了解决企业中接口(api)中定义统一标准规范的文档生成工具. 尤其是前后端分离时对一些业务接口也不 ...

  5. spring cloud 快速上手系列 -> 04-网关 Gateway -> 041-空的工程

    spring cloud 快速上手系列 系列说明:快速上手,一切从简,搭建一个简单的微服务框架,让新手可以在这个基础框架上做各种学习.研究. 04-网关 Gateway 041-空的工程 1,说明 网 ...

  6. 【快速上手系列】保姆级Layuimini与SSM的联合使用教程(数据表格操作)

    [快速上手系列]保姆级Layuimini与SSM的联合使用教程(数据表格操作) 使用步骤 导入layuimini 下载layuimini文件 这个并不是直接运行的,需要用HBuilder导入 layu ...

  7. 【快速上手系列】五分钟即可学会的easyUI的简单使用教程

    [快速上手系列]五分钟即可学会的easyUI的简单使用教程 一个简单方便的前端框架 引入文件 引入两个css样式和三个js <!--引入easyUI的样式 --> <link hre ...

  8. NumPy 快速入门系列:应用统计学基础概念、相关统计指标与NumPy的实现

    NumPy 快速入门系列:应用统计学基础概念.相关统计指标与NumPy的实现 前言: 统计学导论: 统计学定义: 统计学分类: 统计学基本概念: 统计过程: 统计指标与NumPy: 用 Python ...

  9. 【安全利器SELinux快速入门系列 | 01】SELinux基础入门

    这是机器未来的第35篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125914553 文章目录 1. 研究目标 2. se ...

最新文章

  1. AI一分钟|阿里云解释故障原因:触发了一个未知代码Bug;清华蝉联ISC18超算竞赛总冠军...
  2. git warning: LF will be replaced by CRLF in 解决办法
  3. 基于SP4062电路IO接口八通道保护板
  4. 去掉动网广告“国内使用量最大的动网论坛”的方法
  5. 将同一列的值用逗号分隔连接成一个字符串
  6. QT安装和Hello,world
  7. GConf error:Failed to contact configuration server
  8. VS2008中开发Silverlight 2.0的配置
  9. 在 GitHub 上创建一个 Swift 包:其实一点也不简单
  10. linux服务器知识学习:Linux与Windows之间的区别
  11. 撕掉单词书,每天花10分钟做这件事,英语水平暴涨!
  12. 机器学习笔记(二十六):支撑向量机(SVM)
  13. 相似图片搜索——感知哈希算法
  14. 阿里云腾讯云领衔,中国成为全球第二大云服务市场
  15. 黑科技知识:需要登录才能访问的网站如何破解?仅仅只需 3 步!
  16. NXP KV10 FTM fault功能的配置
  17. pandas算加权平均值_Pandas数据帧中多列的加权平均数
  18. 宠物狗变机械狗,太有趣了!
  19. Python Requests:两个例子说明get和post方法+用谷歌浏览器查看网络请求
  20. python解答蓝桥杯真题2 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在19351936年应邀来中国清华大学讲学。。。

热门文章

  1. nmon 监控 下载使用
  2. 旧版中 pytorch.rfft 函数与新版 pytorch.fft.rfft 函数对应修改问题
  3. BonesPro中文版
  4. React和Vue对比 1
  5. oracle调整尾数,word数据类型
  6. 2020-02-06
  7. WPF版,MVVM模式,简易抽奖器
  8. [Err] [Dtf] 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_T
  9. U盘出现大量乱码文件,并且不能彻底删除
  10. mc服务器libs文件夹,[综合|管理]McQQBot —— 在服务器上运行QQ机器人 并产生交互[1.8+]...