C语言系列(三):基本数据类型与表达式

2023-05-16

在这里插入图片描述

计算机中的数据不单是简单的数字,所有计算机处理的信息,包括文字、声音、图像等都是以一定的数据形式存储的,数据在内存中保存,存放的情况由数据类型决定。

C语言的数据类型
基本类型:
整型,字符型,实型(浮点型)[单精度,双精度]
构造类型:
数组类型,结构体类型,共用体类型,枚举类型
指针类型
空类型

整数类型

整数类型即整型,C语言中又分为短整型(short),基本整型(int),长整型(long),和无符号型(unsigned)4种,无符号型又细分为无符号整型(unsigned int),无符号短整型(unsigned short),无符号长整型(unsigned long)。

注意:C语言没有规定以上各类型数据所占内存的字节数,且不同计算机在处理上有所不同。

在这里插入图片描述

整型数据溢出:若一个int型数据超出最大允许值,出现数据丢失的情况。解决办法是使用表示范围更大的数据类型,如long int。

说明:有符号数指存储单元最高位表示符号,无符号数表示存储单元中全部二进制位都用来存放数据。

C语言整型数据一般有十进制、八进制、十六进制3种表达形式。

  1. 十进制:与数学上的表示相同,如1234,-888等;
  2. 八进制:以数字0开头,后跟其他数字,如01234,-0888等;
  3. 十六进制:以0x开头,后跟其他数字,如0x00,0x1A等。

注意:在整数后面加一个字母l或L,则认为是长整型。

实数类型

实数类型即实型数据(浮点型数据),包括单精度float和双精度double两类。

在这里插入图片描述

说明:实数在计算机中只能近似表示,运算中也会产生误差。

C语言实型数据(浮点型数据)一般有2种表达形式:

  1. 浮点表示形式:即小数形式,小数点前后至少一边有数字,如1.23,0.88等;
  2. 科学计数法表示:在E(e)之前的尾数必须有数据(可以是小数),之后的指数只能是整数,指数为正则可以省略符号,如1.234E+6、1.234E6、-1.234e-6。

实型数据溢出:若一个float型数据超出最大允许值,出现数据丢失的情况。解决办法是使用表示范围更大的数据类型,如double,long double等。

字符类型

在这里插入图片描述

说明:

  1. 表示:用单引号表示,如‘a’,’A’等;
  2. 每个字符型数据在内存中占1个字节;
  3. 转义字符:用反斜杠()引导的一个字符或一个数字序列可以表示自负两,它将反斜杠后面的字符或数字转换成别的意义。

常见转义字符

在这里插入图片描述

符号常量

在C语言中可以使用宏定义命令#define定义一个标识符作为符号常量,符号常量名一般使用大写字母,以区分变量名,其一般定义格式如下:#define 标识符 常量
例如:
#define MAX 100
#define MIN 0
#define PI 3.14
作用:一旦某标识符定义成为一个常量后,以后在程序处理时,凡是遇到该标识符,都将替换成对应的常量。

变量与变量定义

变量定义语句
格式:数据类型名 变量表名;
作用:声明变量的名称和类型,分配相应的内存单元

变量定义的4种位置:

  1. 一般放在函数的开头部分声明,即局部变量,作用域只在本函数内;
  2. 函数名后的括号内声明,即函数形式参数,也是局部变量,作用域只在本函数内;
  3. 放在复合语句内声明,即临时变量,作用域只在复合语句内;
  4. 放在任何函数外声明:即全局变量,作用域在整个程序。

对于变量赋初值,有几点说明:

  1. 若=两边类型不一致,系统自动进行类型转换,转换时以=左边变量类型为准,因此,可能会造成数据丢失;
  2. 对几个变量赋同一个值,不能连等赋值,必须逐个赋值;
    int a = b = c = 10;//非法赋值
    int a = 10, b = 10, c = 10;//合法赋值
  3. 初始化变量值不是在编译阶段完成,而是在程序运行时执行,相当于一个赋值语句。

C语言运算符

在这里插入图片描述

自增运算符与自减运算符
++与–属单目运算符,操作对象只能是变量,功能使变量的值加1或减1,结合性为右结合。
自增(++)有两种使用格式,前加和后加。

  1. 前加
    形式:++n,相当于n=n+1,运算顺序是先执行n=n+1再将n的值作为表达式的值。
  2. 后加
    形式:n++,相当于n=n+1,运算顺序是先将n的值作为表达式的值,再执行n=n+1操作。
    注意:++与–的操作对象只能是变量,不能是常量或表达式。3++或(i+j)++都是非法表达式。

赋值表达式
复合算术赋值运算符
在这里插入图片描述

说明:

  1. 优先级低于算术运算符、关系运算符、逻辑运算符。
  2. 结合性按自右向左方向结合。例如a=b=20/4相当于a=(b=20/4)。

逗号表达式
一般形式:表达式1,表达式2,…,表达式n
求解过程:先计算表达式1的值,再计算表达式2,以此类推。最后将表达式n的值作为逗号表达式的值,再将表达式n的类型作为逗号表达式的类型。

逗号表达式的优先级低于赋值表达式,级别最低。因此逗号表达式须用括号括起来,作为整体。结合性为自左向右,即左结合。

条件运算符
一般形式:表达式1?表达式2:表达式3
求解过程:先计算表达式1的值,如果为真,则求解表达式2的值并把该值作为整个表达式的值;如果为假,则求解表达式3的值并把该值作为整个表达式的值

条件运算符的优先级较低,只比赋值运算符高。结合性为右结合。
注意:条件表达式常用语两分支的简单情况,代替if-else语句。

长度运算符
sizeof是单目运算符,用来返回变量或数据类型的字节长度。使用sizeof可以增强程序的可移植性,使之不受具体计算机类型长度的限制。

类型转换
C语言类型转换可以归纳成3种转换方式:自动转换,赋值转换,强制转换。
自动转换类型转换规则(低优先级->高优先级):
char,short -> int -> unsinged -> long -> double<-float

赋值转换时将字符行数据赋值给整型变量,字符数据占整型数据的低字节,高字节补位。
强制转换一般形式:(类型名)(表达式)

参考资料:肖捷 侯家利——C语言在这里插入图片描述
程序设计

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言系列(三):基本数据类型与表达式 的相关文章

  • Java编写MapReduce的步骤

    Mapper 自定义类继承Mapper类重写自定义类中的map方法 xff0c 在该方法中将K1和V1转为K2和V2将生成的K2和V2写入上下文中 二 Reduce 自定义类继承Reduce类重写Reducer中的reduce方法 xff0
  • PX4入门及开发指南

    PX4入门及开发指南 用户手册开发者手册 用户手册 https docs px4 cc master zh index html 开发者手册 https dev px4 cc master zh index html
  • 树莓派编译工作空间卡死

    树莓派编译程序时遇到卡死 1 树莓派安装的Ubuntu mate 16 04 系统默认设置的swap交换空间不够 xff0c 而编译某些文件的时候需要较大的交换空间 xff0c 树莓派的交换空间被用满所以树莓派看起来好像是死机了的样子 xf
  • 超好用但是很多人不知道的的串口(网络)调试助手推荐

    小众但是超好用的串口 xff08 网络 xff09 调试助手 前言O ComToll xff08 串口 xff09 格西烽火串口网络调试助手伏特加串口 xff08 网络 xff09 调试助手windows自带的串口调试助手总结 前言 这里的
  • STM32上可用的的SM 2 3 4国密算法

    可在STM32上使用的国密算法 SM 2 3 4 SM2SM3SM4 下面直接给出代码 xff0c 有问题可评论 xff0c 自己改动的 xff0c 测试不到的地方可能有bug xff0c 欢迎指正 SM2 由于SM2算法牵扯到一些较为复杂
  • Stm32下环境传感器-Stlm75-hts221-spg30(Hal)

    Stm32下环境传感器 Stlm75 hts221 spg30 xff08 Hal xff09 简介IIC驱动接口Stlm75hts221Spg30 简介 Stlm75与Hts221都是ST的传感器 xff0c 有官方例程 xff0c 我只
  • vscode makefile编译方法实例

    c出来 o 使用 o出来 bin NB二人组走天下 xff0c 目标 xff1a 依赖 xff0c 下一行tab 加命令 感觉时比较块上手的教程 xff0c 手写AI c语言中文网的makefile c语言中文网的就是按部就班 xff0c
  • 树莓派(三):将你的树莓派进行镜像备份

    0 前言 就像备份电脑一样 xff0c 你一定不想树莓派出错后重新配置树莓派 xff0c 将你的树莓派进行备份 1 建立img镜像文件 随便找一个地方 xff0c 新建一个文本文档 xff0c 命名为 你喜欢的名字 img 这时候就会生成一
  • 接口的理解、接口匿名实现类的创建

    接口的概述 xff1a 一方面 xff0c 有时必须从几个类中派生出一个子类 xff0c 继承它们所有的属性和方法 但是 xff0c Java不支持多重继承 xff0c 有了接口 xff0c 就可以得到多重继承的效果 另一方面 xff0c
  • 关于大疆经纬M100进行二次开发视觉跟踪和视觉SLAM的求助

    本人第一次接触大疆的二次开发 xff0c 现在的需求是使用M100进行二次开发能够实现视觉跟踪目标 xff0c 并能够实现视觉SLAM xff0c 但是我没有接触过二次开发 xff0c 希望各位有过经验的大佬能够不吝留言给我说一下具体实现的
  • 定义一个接口CanFly,描述会飞的方法public void fly();

    1 使用类与接口的知识完成如下要求 xff1a xff08 1 xff09 定义一个接口CanFly xff0c 描述会飞的方法public void fly xff08 2 xff09 分别定义类飞机和鸟 xff0c 实现CanFly接口
  • 在Keil4中新建51单片机工程模板详细步骤

    本文主要介绍51单片机学习和开发中的第一步 新建工程模板 对于刚开始学单片机的同学 xff0c 首先要在电脑上装好MDK4软件和CH340驱动 xff0c 然后也要有一个单片机烧录软件 xff08 一般买回来的单片机附带的资料里都会有这三个
  • Java笔试常用库函数

    字符串转数组 String s span class token operator 61 span span class token string 34 13 34 span span class token punctuation spa
  • Pytorch极简入门教程(十六)——DenseNet提取特征

    Pytorch之DenseNet提取特征 导入必要的模块 span class token keyword import span torch span class token keyword from span torch span cl
  • 1. 创建一个功能包(package)

    一 ros所有的进程都需要在工作空间下进行 首先 xff0c 在 home文件夹 任何目录都可以 下创建一个工作空间 xff1a source span class token operator span opt span class to
  • 谷粒学院知识点总结

    文章目录 前言一 项目功能点1 后台管理系统功能2 前台系统功能3 总结项目技术点 二 项目问题三 项目描述1 总体介绍2 项目功能模块 amp 主要深入的模块3 项目涉及技术 前言 谷粒学院知识点总结 xff0c 准备实习面试 一 项目功
  • Win11家庭版U盘Pe安装

    目录 1 准备材料 2 安装 3 开机 4 需要安装的软件 5 封装 6 发现问题 未解决 1 准备材料 1 win11下载 MSDN 迅雷地址链接 2 驱动总裁 U盘魔术师 地址链接 2 安装 1 做好启动盘后 开机进pe 3 开机 准备
  • Android应用与硬件建立连接

    文章目录 1 建立连接的原理2 信件 和 邮递员 3 对方可能未收到如何处理4 接收 回信 5 多次数据交互6 小结 1 建立连接的原理 在实现软件与硬件交互的时候 xff0c 首先需要了解该硬件的构造 xff0c 运行流程等相关操作 xf
  • 使用Layui时间组件(laydate)

    在一般的程序或者软件业务的操作上 xff0c 通常涉及时间的记录 xff0c 需要记录业务时间 xff0c 或者根据时间来筛 选业务 选择时间 xff0c 可以直接输入 xff0c 也可以弹出日期进行选择 在layui中提供了 xff0c
  • 规范vs代码

    开发工具与关键技术 xff1a VS 作者 xff1a 吴业华 撰写时间 xff1a 2019年7月7号 在我们编程过程中 代码的规范性涉及很大很大 xff0c 有时候即使你的代码打对了 但是依然报错 这份功劳差不多大概都是代码的不规范所收

随机推荐

  • ESP8266_APP连接试验

    ESP8266 APP连接试验 概述硬件部分8266固件烧录Arduino IDE 8266版型下载安装MQTT库ESP8266程序设计 APP部分创建项目UI设计主程序设计 概述 本次试验使用的是ESP8266 NodeMCU 硬件部分
  • ROS安装时rosdep init与rosdep update问题解决方法(2022.04.08亲测)

    2022 4 8更新 xff1a 运行下面的指令即可 span class token function sudo span span class token function apt get span span class token f
  • 【已解决】mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaData

    问题描述 使用MMDetection复现论文 xff0c 出现如下Bug xff1a ImportError home quaiping anaconda3 lib python3 7 site packages mmcv ext cpyt
  • g2o图优化简介与基本使用方法

    一 g2o简介 g2o xff08 General Graphic Optimization xff09 是一个基于图优化的库 xff0c 将非线性优化与图论结合起来的理论 xff0c 我们可以利用g2o求解任何可以表示为图优化的最小二乘问
  • Realsense安装使用过程问题汇总

    1 安装失败内核不支持 问题 xff1a 由于我在Ubuntu20 04上进行安装 xff0c 内核版本为5 13 xff0c 而目前realsense最高仅支持到5 4 xff0c 所以内核版本过高需要降低内核版本才能再次编译安装 官方要
  • ROS与STM32通信的实现

    ROS功能包与STM32工程文件 xff1a 蓝奏云 xff1a https huffie lanzouw com iN7w602ti37a 1 通信协议 STM32和ROS端各有一个数据发送函数和数据接收函数 xff0c 发送和接受的数据
  • C语言 字符串最后一位可用’\0‘标示

  • 基于C#的工控上位机软件开发从入门到学废,需要几步?

    基于C 的工控上位机软件开发从入门到学废 xff0c 需要几步 xff1f 随着工控产品的应用 xff0c 开始大幅度渗透进民用领域 涉及的工控产品范围广泛 xff0c 如PLC DCS 变频器 仪表 电机 SCADA 低压及配电元器件等
  • 工作生活篇之第六天

    工作生活篇之第六天 最近由于疫情的影响 xff0c 国家电网也发布了最新消息 xff0c 电费在欠额的情况可继续使用 本来我是以为只有电费欠费可以继续使用 xff0c 没想到燃气费也是 xff0c 最近燃气费不多了 xff0c 然后还得去银
  • 工作生活篇之第九篇

    工作生活篇之第九篇 一直觉得这世上告别仪式挺多的 xff0c 比如喝酒 旅行 xff0c 或干脆痛哭一场 xff0c 可是后来才知道 xff0c 人生中大部分告别是悄无声息的 xff0c 原来某天的相见 xff0c 竟已是最后一面 xff0
  • ROS:查看ROS相关信息的常用方法(三)

    文章目录 一 ROS命令与节点话题查看1 rosnode2 rostopic3 rostopic info 话题名称4 rosrun rqt graph rqt graph 二 rqt工具与节点话题查看 一 ROS命令与节点话题查看 1 r
  • 【算法】基于STM32的MPU6050卡尔曼滤波算法(入门级)

    1 简介 卡尔曼滤波 xff08 Kalman filtering xff09 是一种利用线性系统状态方程 xff0c 通过系统输入输出观测数据 xff0c 对系统状态进行最优估计的算法 由于观测数据中包括系统中的噪声和干扰的影响 xff0
  • 爬虫的爬取策略: 宽度优先与深度优先

    64 爬取策略 xff1a 宽度优先与深度优先 1 分别的优缺点 2 什么场景下用 xff1f 爬虫的抓取策略 在爬虫系统中 xff0c 待抓取URL队列是很重要的一部分 待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题 x
  • shell脚本内调用另外一个shell脚本的几种方法

    有时会在一个shell脚本 如test call other shell sh 中调用另外一个shell脚本 如parameter usage sh xff0c 这里总结几种可行的方法 xff0c 这些方法在linux上和windows上
  • 真实项目开发的input标签焦点事件运用

    真实项目开发中input标签焦点事件的运用 开发工具与关键技术 xff1a VisualStudio C 作者 xff1a 落白 撰写时间 xff1a 2019 6 15 在开发项目时有时候会需要这么一个功能效果 xff0c 比如有六个in
  • layui use 定义js外部引用函数

    layui use 加载layui define 定义的模块 xff0c 当外部 js 或 onclick调用 use 内部函数时 xff0c 需要在 use 中定义 window 函数供外部引用 window span class tok
  • shell脚本中内嵌可执行文件/文件

    示例 test sh span class token operator span span class token operator span bin span class token operator span sh 追加在shell脚
  • 浅谈嵌入式

    浅谈嵌入式 相比耳熟能详的互联网行业 xff0c 嵌入式这几个字眼出现在公众眼前的几率可以达到忽略不计的程度 xff0c 这不仅说明嵌入式行业的工程师数量远比互联网少 xff0c 同时意味着嵌入式行业的吸引力貌似低于互联网 但是 xff0c
  • C语言系列(一):C语言程序概述

    C语言作为一种高级程序设计语言 xff0c 既有高级语言的方便性 灵活性和通用性等特点 xff0c 又兼具低级语言的特性 xff0c 提供程序员直接操作计算机硬件的功能 适合各种类型的软件开发 xff0c 深受软件工程技术人员的青睐 嵌入式
  • C语言系列(三):基本数据类型与表达式

    计算机中的数据不单是简单的数字 xff0c 所有计算机处理的信息 xff0c 包括文字 声音 图像等都是以一定的数据形式存储的 xff0c 数据在内存中保存 xff0c 存放的情况由数据类型决定 C语言的数据类型 基本类型 xff1a 整型