P2-1与P2-2.【C语言基本数据类型、运算符和表达式】第一节与第二节

news2024/10/20 1:47:09

讲解视频:

P2-1.【基本数据类型、运算符和表达式】第一节

P2-2.【基本数据类型、运算符和表达式】第二节

必备知识与理论

1.数据类型概述

所谓数据类型,是按被定义变量的性质,表示形式,占据存储空间的多少,构造特点来划分的。

C语言的数据类型分为简单数据类型和复杂数据类型两种。简单数据类型是由系统自动规定数据存储空间的大小,它包括整数类型(整型)、实数类型(实型)、字符类型(字符型)和空类型。而复杂数据类型是由用户按照一定规则来决定数据占用空间的大小,它包括数组类型、结构体类型、共用体类型和枚举类型,因此后者也可以称为用户自定义类型。

(1)基本数据类型

基本数据类型最主要的特点是,其值不可以再分解为其它类型。 也就是说,基本数据类型是自我说明的。

(2)构造数据类型

构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。在C语言中,构造类型有数组类型、结构体类型、共用体(联合)类型三种。

(3)指针类型

指针是一种特殊的、同时又是具有重要作用的数据类型。其值用来表示某个变量在内存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。

(4)空类型

在调用函数值时,通常应向调用者返回一个函数值。这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明。但也有一类函数,调用后并不需要向调用者返回函数值,这种函数可以定义为空类型。其类型说明符为void。

2.常量

在程序执行过程中其值始终不变的量称为常量。它们可与数据类型结合起来分类。例如,可以分为整型常量、实型常量、字符常量等。在程序中,常量可以不经说明直接使用。

(1)整型常量

①八进制整型常量

八进制整型常量必须以0开头,即以0作为八进制整型常量的前缀。数码取值为0~7。八进制整型常量通常是无符号数。

②十六进制整型常量

十六进制整型常量的前缀为0X或0x。其数码取值为0~9, A ~ F或 a ~f。

③十进制整型常量

十进制整型常量没有前缀。其数码为0~9。

④整型常量的后缀

长整型常量是用后缀“L”或“l”来表示的。

(2)实型常量

实型常量也称为实数或浮点数。如:-1.89、1.23456e5为实型常量。在C语言中,实型常量只采用十进制。它有两种表示形式,即小数形式和指数形式。

小数形式由数码0~9和小数点组成。如:3.1415926、0.0、25.0、5.789、0.13、5.0、-267.8230等均为合法的实型常量。

注意:必须有小数点。

指数形式由十进制数加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。

(3)字符常量

字符常量是用单引号括起来的一个字符。例如:‘a’、‘A’、‘b’、‘?’、‘=’都是合法的字符常量。

转义字符。C语言还允许用一种特殊的字符常量,即以反斜线“\”开头,后跟一个或几个字符。由于转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。

【例2.1】转义字符的使用。

#include <stdio.h>

main()

{

int a,b,c;   /* 定义a,b,c为整型变量 */

a=5;b=6;c=7; /* 给a,b,c赋值 */

printf("%d\n\t%d  %d\n",a,b,c);

printf("  %d  %d\t\b%d\n",a,b,c); /* 按要求输出a,b,c的值 */

}

运行结果为:

5

6  7

5  67

(4)字符串常量

字符串常量是由一对双引号括起的字符序列。例如:"HINA"," C program. "," $ 12.5"等都是合法的字符串常量。

注意:‘\0’是系统自动加上的。因此,"a"实际包含了两个字符:‘a’和‘\0’,因此不能把"a"赋给一个字符变量。

C语言中没有专门的字符串变量,字符串如果要存放在变量中,则需要用字符数组来存放,这将在后面的任务中介绍。

(5)符号常量

用一个标识符来代表常量,即给某个常量取个有意义的名字,称为符号常量。符号常量必须先定义再使用。

定义形式一:#define 标识符 常量

例如:#define PI 3.1415926

其中#define是一条预处理命令(预处理命令都以“#”开头),称为宏定义命令,其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均替换为该常量值。

定义形式二:const 数据类型 标识符=常量表达式;

例如:const int max=300;

      const float x=max+3.14;

使用const定义符号常量应注意以下几点:

(1)const定义是以关键字const开头,以分号结尾的C语言语句。

(2)每个const语句可以定义多个同类型的符号常量,相互之间用逗号隔开。

(3)const 定义既可以出现在函数外部,也可以出现在函数内部。不同位置定义的符号常量的作用域也不同。

(4)const定义是在程序编译时完成对标识符的赋值,这个值被存放在内存的常量区中,const定义的常量便于进行类型检查。宏定义只是在程序编译时编译器自动替换相应的宏,是简单的替换,宏名作为标识符被放在内存的代码区中。

为了区别程序中的符号常量名与变量名,习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。

3.变量

在程序执行过程中其值可变的量称为变量。

如:int a,b;

    float x,y;

C语言规定:变量都必须先说明后使用。只有这样,编译时才能为其分配相应的存储单元,也才能以此来检查变量所进行的运算是否合法。定义变量时还要尽量做到“见名知意”。

(1)整型

整型变量可分为基本型、短整型、长整型和无符号型4种。

①基本整型。类型说明符为int,在内存中占4个字节,其取值为基本整常数。

②短整型。类型说明符为short int或short,在内存中占2个字节,其取值为短整常数。

③长整型。类型说明符为long int或long,在内存中占4个字节,其取值为长整常数。

④无符号型。类型说明符为unsigned,无符号型又可与上述3种类型匹配而构成无符号基本整型、无符号短整型、无符号长整型。

变量说明的格式为:

类型标识符 变量名1[,变量名2,…];

(2)实型变量

实型变量分为两类:单精度型和双精度型,其类型说明符分别为float (单精度说明符)和double (双精度说明符)。

【例2.2】 float和double的应用。

#include <stdio.h>

main()

{ float a;

  double b;

  a=3333.333333;   

  b=3333.3333333;

  printf("a=%f\nb=%f\n",a,b);

}

程序执行结果为:

a=3333.333203 

b=3333.333333

从本例可以看出,由于a是单精度型,有效位数只有7位。而整数已占4位,故小数3位之后均为无效数字。b是双精度型,有效位为16位。但Turbo C默认格式输出浮点数时,规定小数后最多保留6位,其余部分四舍五入。

(3)字符变量

字符型变量用来存放字符常量,即单个字符,不能存放字符串。

字符型变量的类型说明符是char。字符变量类型说明的格式和书写规则都与整型变量相同。

说明格式为:

类型标识 变量名1[,变量名2,…]

例如:char c1,c2;  /* c1,c2被说明为字符型变量 */

【例2.4】整型量与字符型量的混合使用。

#include <stdio.h>

main()

{

 char c1,c2,c3,c4;

c1=65;c2=66;

c3=‘A’; c4 =‘B’;

 printf("%c,%c,%d,%d\n",c1,c2,c3,c4);

}  

运行结果为:

A,B,65,66

C语言中,整型量与字符型量是通用的,但是应注意字符数据只占一个字节,用char来说明的字符变量只能存放-128~127范围内的带符号整数。单字节无符号整型量可以用unsigned char来说明,表示数据的范围为0~255。

4.不同类型数据的混合运算

整型、实型、字符型数据间可以混合运算。在进行混合运算时,不同类型的数据要转换成同一类型。转换的方法有两种:一是自动转换,二是强制转换。

(1)类型的自动转换

(2)类型的强制转换

强制类型转换是通过类型转换运算来实现的。强制类型转换的格式为:

(类型说明符)达式

其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

例如:  (float)x  /* 把x转换为实型float */

(int)(x+y) /* 把x与y的和转换为整型 */

在使用强制转换时应注意以下问题:

注意:类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成

(int)x+y则只将x转换成int型,然后再与y相加。

无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,原来变量的类型并未改变。

任务实施

本任务是在已知圆半径的情况下,计算圆的面积和周长,利用求面积和周长的数学公式即可完成计算。在计算中用到圆周率∏,我们知道圆周率∏是一个固定值3.1415926,所以圆周率说明为常量,半径定义为变量。

程序如下:

#include <stdio.h>

#define PI 3.14     /* 定义常量PI代表圆周率*/

main()  

{  int r;   /* 定义整型变量r表示圆半径 */

float area,girth; /* 定义实型变量area、girth表示圆面积和周长 */

r=10;     /* 给变量r赋值10 */

area=r*r*PI;   /* 计算圆面积 */

girth=2*PI*r;  /* 计算圆周长 */

printf("area=%f,girth=%f\n",area,girth); /* 输出计算结果 */

}     

运行结果:

area=314.000000,  girth=62.800000

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

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

相关文章

【分布式事务-04】分布式事务seata的XA模式

redis系列整体栏目 内容链接地址【一】分布式事务之2pc两阶段提交https://zhenghuisheng.blog.csdn.net/article/details/142406325【二】分布式事务seata的安装下载与环境搭建https://zhenghuisheng.blog.csdn.net/article/details/142893117【三】分布式事务seata的AT模式htt…

k8s ETCD数据备份与恢复

在 Kubernetes 集群中&#xff0c;etcd 是一个分布式键值存储&#xff0c;它保存着整个集群的状态&#xff0c;包括节点、Pod、ConfigMap、Secrets 等关键信息。因此&#xff0c;定期对 etcd 进行备份是非常重要的&#xff0c;特别是在集群发生故障或需要恢复数据的情况下。本文…

Axure科技感元件:打造可视化大屏设计的得力助手

Axure&#xff0c;作为一款专业的原型设计工具&#xff0c;凭借其强大的设计功能、丰富的组件库和灵活的交互能力&#xff0c;成为了许多设计师打造科技感设计的首选工具。其中&#xff0c;Axure科技感元件更是以其独特的魅力和实用性&#xff0c;在数据可视化大屏、登录界面、…

HarmonyOS开发(State模型)

一、State模型概述 FA&#xff08;Feature Ability&#xff09;模型&#xff1a;从API 7开始支持的模型&#xff0c;已经不再主推。 Stage模型&#xff1a;从API 9开始新增的模型&#xff0c;是目前主推且会长期演进的模型。在该模型中&#xff0c;由于提供了AbilityStage、Wi…

Leetcode—1114. 按序打印【简单】(多线程)

2024每日刷题&#xff08;179&#xff09; Leetcode—1114. 按序打印 C实现代码 class Foo { public:Foo() {firstMutex.lock();secondMutex.lock();}void first(function<void()> printFirst) {// printFirst() outputs "first". Do not change or remove t…

jupyter notebook远程连接服务器

jupyter notebook远程连接服务器 文章目录 jupyter notebook远程连接服务器jupyter是什么配置步骤安装jupyter生成jupyter配置文件编辑jupyter配置文件设置密码ssh隧道 启动顺序jupyter添加kernel下载ipykernel包添加kernel 测试遇到的问题 jupyter是什么 Jupyter Notebook是一…

fastStone Capture截图神器,你想要的功能它都有!

前言 大家好&#xff0c;我是小徐啊。从今天开始&#xff0c;小徐将介绍很多Java开发领域相关的软件工具资源&#xff0c;欢迎大家关注。今天&#xff0c;介绍一款非常小巧&#xff0c;但功能十分强大的图片软件&#xff0c;fastStone Capture。这款工具&#xff0c;主要是图片…

101、QT摄像头录制视频问题

视频和音频录制类QMediaRecorder QMediaRecorder 通过摄像头和音频输入设备进行录像。 注意: 使用Qt多媒体模块的摄像头相关类无法在Windows平台上进行视频录制&#xff0c;只能进行静态图片抓取但是在Linux平台上可以实现静态图片抓取和视频录制。 Qt多媒体模块的功能实现是依…

Git之代已修改文件的目录高亮设置

不管Android Studio或者Idea&#xff0c;进入Setting 选择如图所示&#xff0c;并进行勾选 就可以高亮了。

sentinel原理源码分析系列(四)-ContextEntry

启动和初始化完成后&#xff0c;调用者调用受保护资源&#xff0c;触发sentinel的机制&#xff0c;首先构建或获取Context和获取Entry&#xff0c;然后进入插槽链&#xff0c;决定调用是否通过&#xff0c;怎样通过 上图展示构建Context和获取Entry的类互动图 获取或构建Conte…

深度学习实战94-基于图卷积神经网络GCN模型的搭建以及在金融领域的场景

大家好,我是微学AI,今天给大家介绍一下深度学习实战94-基于图卷积神经网络GCN模型的搭建以及在金融领域的场景。文章首先介绍了GCN模型的原理及模型结构,随后提供了数据样例,并详细展示了实战代码。通过本文,读者可以深入了解GCN模型在金融场景下的应用,同时掌握代码的具…

keil5软件调试纪要

1&#xff0c;连接ST-LINK后查看连接信息。 2&#xff0c;除了printf调式外&#xff0c;keil5进行如下调式。 &#xff08;0&#xff09;进入调试界面 退出调式界面 &#xff08;1&#xff09; 打断点 &#xff08;2&#xff09;复位 &#xff08;3&#xff09;运行 &#xf…

判断一个数是不是素数(质数)(c语言)

素数的定义&#xff1a; 大于1的自然数&#xff0c;除了1和他本身不再有其它的因数 数学原理&#xff1a; 假设一个num不是素数&#xff0c;必然存在一个因子&#xff0c;该因为一定<√num&#xff0c;因此只要检测到√num中是否存在因子即可。 代码如下&#xff1a; #…

基于springboot+vue 大学毕业设计管理系统设计与实现

博主介绍&#xff1a;专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

python 作业1

任务1: python为主的工作是很少的 学习的python的优势在于制作工具&#xff0c;制作合适的工具可以提高我们在工作中的工作效率的工具 提高我们的竞争优势。 任务2: 不换行 换行 任务3: 安装pycharm 进入相应网站Download PyCharm: The Python IDE for data science and we…

day02 -- docker

1.docker的介绍 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使…

androidStudio编译导致的同名.so文件冲突问题解决

files found with path lib/arm64-v8a/libserial_port.so from inputs: ...\build\intermediates\library_jni\debug\jni\arm64-v8a\libserial_port.so C:\Users\...\.gradle\caches\transforms-3\...\jni\arm64-v8a\XXX.so 解决方式如下&#xff1a; 1.将gradle缓存文件删…

mysql 10 单表访问方法

01.优化的过程 对于我们这些 MySQL 的使用者来说&#xff0c; MySQL 其实就是一个软件&#xff0c;平时用的最多的就是查询功能。DBA时不时丢过来一些慢查询语句让优化&#xff0c;我们如果连查询是怎么执行的都不清楚还优化个毛线&#xff0c;所以是时候掌握真正的技术了。我…

推荐?还是踩雷?3款中英互译软件大盘点,你真的选对了吗?

作为一个爱到处跑的人&#xff0c;我特别明白旅行的时候能说会道有多重要。不管是跟当地人聊天&#xff0c;还是看路标、菜单&#xff0c;有个好用的翻译软件是肯定少不了的。今天&#xff0c;我打算给你们介绍3款中英文互译的翻译工具&#xff0c;帮你挑出最适合自己的那一个。…

图论day62|拓扑排序理论基础、117.软件构建(卡码网)、最短路径之dijkstra理论基、47.参加科学大会(卡码网 第六期模拟笔试)

图论day62|拓扑排序理论基础、117.软件构建&#xff08;卡码网&#xff09;、最短路径之dijkstra理论基、47.参加科学大会&#xff08;卡码网 第六期模拟笔试&#xff09; 拓扑排序理论基础117.软件构建&#xff08;卡码网&#xff09;最短路径之dijkstra理论基础47.参加科学大…