当前位置: 首页 > news >正文

C语言学习_DAY_3_基本数据类型_运算符与表达式【C语言学习笔记】

目录

I. 基本数据类型

II. 复杂的输出和输入语句编写

III. 运算符与表达式

III.I 算术运算符

III.II 关系运算符

III.III 逻辑运算符

III.IV 位运算符

III.V 三目运算符

III.VI 逗号运算符


高质量博主,点个关注不迷路🌸🌸🌸

I. 基本数据类型

书接上回,我们在上一篇笔记中提到了变量的概念,在C语言中,变量有不同的种类,对应着不同的数据类型,我们先看最常用的一种基本数据类型整型数据,在C语言中,用关键字 int 来声明或定义

#include<stdio.h>int main(){int a = 3;return 0;
}

上面这段代码,定义了一个整型的变量a,它的值为3。

那么除了整型外,C语言中还有一些其他的基本数据类型,它们是:

标识符类型输入 / 输出所占字节
char字符数据类型%c1
short短整型%hd2
int整型%d4
long长整型%ld4
long long更长的整形%lld8
float单精度浮点数%f4
double双精度浮点数%f(输入时使用%lf)8

注意,上表的第三列给出了在输入和输出不同类型的变量时,在scanf()和printf()函数中使用的标识符,我们回忆上节课的内容,可以把这部分和之前的内容联系起来。

#include<stdio.h>int main(){short a0 = 3;  // 短整型 int a = 3; // 整型 long b = 4; // 长整型 double c = 1.1; //  双精度浮点数型 float d = 1.2; //	单精度浮点数型 char e = 'c';  //	字符型 printf("%hd\n",a0);printf("%d\n",a);printf("%ld\n",b);printf("%lf\n",c);printf("%f\n",d);printf("%c\n",e);   	return 0;
}

最后补充一句:这部分讲的是C语言中的基本数据类型,所谓基本,是相对于一些非基本类型而言的,而非基本的数据类型,会在 后面 的笔记中进行讲解,这里只需要简单了解一下:

C语言中有非基本类型:指针类型、枚举类型、结构体类型、数组类型、联合类型


II. 复杂的输出和输入语句编写

这部分本来应该放在上一篇笔记,但上一篇笔记的内容实在太多,因此放在本篇中,做一个简单的插曲,这里讲一下复杂的输出语句要怎么编写。

在上一节中,我们讲到,C语言使用函数printf()来实现输出的操作:

printf(" ");

而且我们也讲了输出一句话,只需要把内容放在双引号之间即可,输出变量,只需要在前面的双引号之间加入% + 变量标识符,而后写一个逗号,后面跟上变量名即可。

那么如何实现输出的过程中,既有我们想要输出的语句,又有变量呢?假如我们有两个变量a,b,a的值是1,b的值是3,我们想要输出:,

a的值是1,b的值是3

这句话要怎么输出呢?我们看一下代码:

#include<stdio.h>int main(){int a = 1;int b = 3;printf("a的值为%d, b的值为%d",a,b);return 0;
}

我们如何理解这种输出呢?下面的内容请一定认真阅读,因为很多新手一直到学完C语言,都没明白复杂输出的逻辑,下面我们讲解一下其中的逻辑:

“% + 变量标识符”,这个整体,代替了我们的变量,因此我们如果既想要输出特定的语句,又想在内部穿插变量,只需要把这个整体放在想要代替的位置,而后在引号后加逗号,放上变量即可。而如果出现了多个% + 变量标识符的整体,那么后面依次要放上多个变量,并且用逗号连接,且次序要与前面引号中的整体的次序一致。

那么同理,如果想要在输入的过程中,一次性输入多个变量,我们举一反三,不难得出:

#include<stdio.h>int main(){int a = 1;int b = 3;scanf("%d %d",&a,&b);return 0;
}

而后依次输入a和b即可。


III. 运算符与表达式

最后,我们聊一聊C语言中的运算符和表达式,这部分的内容对于初学者,不是很好懂,但是我们尽量以简单的方式呈现出来

所谓运算符,就是指做某种特定运算的 符号,例如在小学数学中,我们学过的加法运算,那么它的运算符就是 +。(常看我的文章的朋友可能知道,对一个陌生的名词最好的理解方式,就是将它的定义做语法分析,像这段定义,语法分析后,我们不难得出,运算符,就是某个符号,只不过这个符号代表了某种运算)

表达式,是由变量/常量与运算符连接得到的式子,往往用来实现某个具体的需求。

例如我现在要计算两个整型变量a和b的和,并把这个和赋值给变量c,那么代码应该是:

#include<stdio.h>int main(){int a = 1;int b = 3;int c = a + b;return 0;
}

除了加法运算符,在C语言中,还有一些其他的运算符:

III.I 算术运算符

在C语言中,有以下五种基本的算术运算符:

加法: a + b = c; 

减法: a - b = c;

乘法: a * b = c;

除法: a / b = c;

取余: a % b = c;

这五种基本的算术运算符中,我们重点看一下最后两种运算符,即除法和取余操作:

请看下面这段代码:

#include<stdio.h>int main(){int a = 3;int b = 2;int c = a / b;printf("%d",c);return 0;
}

新手可以先运行一下上面的代码,看看结果与自己预料的是否一致。

在数学中,3 / 2 = 1.5,那么这里为什么是1呢,我们需要深入了解一下C语言的整数除法机制:

当两个整型变量做除法时,除法的结果是一个整数,该整数是原本的结果向下取整得到的整数,所谓向下取整是指:x ∈ [n,n+1], n是正整数,那么向下取整的x = n,例如x = 1.9,向下取整就是1。

那如果我们想要得到真实的运算结果,或者说精确度更高的结果,应该怎么做呢?其实也很简单,我们只需要把参与运算的数字的类型改成浮点数类型即可,什么是浮点数类型,可以看本文上面的部分。代码实现:

#include<stdio.h>int main(){float a = 3;float b = 2;float c = a / b;printf("%f",c);return 0;
}

运行结果:

之后是取余运算%,这个运算符在数学中并没有,是程序语言中特有的一类运算符,它指的是两个数相除的余数,例如:

#include<stdio.h>int main(){int a = 5;int b = 3;int c = a % b;printf("%d",c);return 0;
} 

它的结果是5除以3的余数,那么就是2:

上面五种算数运算符可以组合成更为复杂的计算符,以下面三种常用的为例:

1️⃣ ++运算符

这个运算符表示变量加一的操作,例如a ++ 就相当于a = a + 1。但是,a ++ 与 ++a 并不一样,怎么理解呢,我们先看下面一段代码:

#include<stdio.h>int main(){int a = 3;int b = 3;int c = a++;printf("a++得到的结果:c = %d,此时a = %d\n",c,a);c = ++b;printf("++a得到的结果:c = %d,此时a = %d",c,a);return 0;
}

假设a ++ 与 ++ a是一样的,那么运行的结果,a肯定是4,那么两个c的值也应该是一样的,但我们运行上面的代码,可以看到:

有点神奇对不对,居然得到了不一样的c,其实这是因为:

a ++这句代码在执行时,会首先用a原先的值参与运算,在运算结束之后,再把a的值自增1

而++ a在执行时,会首先把a的值自增1,再参与运算

因此在a ++时,会把a原来的值赋值给c,c就是3,而++a则把a先自增,而后c就是自增后的a = 4。

2️⃣ --运算符

--运算符完全等效++,即a -- 等价于a = a - 1,且 --a和a-- 的执行次序也是不同的。(同++)

3️⃣ +=运算符

+=运算符是这么理解的:

a + = 3,等价于:a = a + 3,即相当于是升级版的++,只不过这次可以指定自增的量,可以自增任意大小的数字。


III.II 关系运算符

关系运算符,即:

>   表示大于

>=  表示大于等于

<   表示小于

<=  表示小于等于

!=   用于测试“不相等”

==   用于测试“相等”

=     用于赋值

注意,上面所有的关系运算符,得到的结果只有0或1,什么意思呢,我们举个例子:

#include<stdio.h>int main(){int a = 3;int b = 3;int c = a == b;printf("c = %d\n",c);int d = a > b;printf("d = %d",d);return 0;
}

运行之后得到:

为什么是这样呢,我们分析代码:

c的值是a == b的结果,a == b表示a和b是否相等,那么很显然,在这个例子中,a和b的值相同,所以a确实和b相等,于是相当于这句话是对的,所以当关系运算符参与运算时,如果关系比较的结果是对的,那么这个运算得到的结果就是1,反之是0。因此d的结果是a > b ,但是a不大于b,所以d = 0。

上面这段话一定要看懂,后面学if等等,需要用到这里的知识。当然学过其他编程语言的,会发现别的语言可能关系运算得到的结果是一个布尔值,但其实C语言是没有布尔值的,只有0和非0,这部分放在后面细聊。


III.III 逻辑运算符

&&    逻辑与       理解为: a && b 就是a 和 b同时成立才会得到1,否则为0

||       逻辑或     理解为:   a || b 就是a 和 b只要有一个成立就得到1,否则为0

!     逻辑非     


III.IV 位运算符

位运算符先不着急,我们在后续的笔记中对此会详细的介绍(先挖坑!!!)


III.V 三目运算符

exp1 ? exp2 : exp3

三目运算符做一个简单的了解即可:

假设我们有这样一句代码:

#include<stdio.h>int main(){int a = 1;int b = 2;int c = (a > b)? a : b;return 0;
}

它的意思就是,c的值是:

a > b是否为真,如果为真,那么就取?后面的第一个式子的结果a给c,否则取?后面第二个

值,即b给c。


III.VI 逗号运算符

最后拓展一下逗号运算符,没错,逗号也是一个运算符:

#include<stdio.h>int main(){int a = 1;int b = 2;int c = (a,b);printf("%d",c);return 0;
}

运行结果:

为什么呢?很简单:

逗号运算符的结果,取得是最后一个逗号后的值,(a ,b),于是最后一个逗号后的值就是b。同理,如果是(a,b,c),那么最后取得值就是c的值。

到这里,我们的C语言学习或编程学习,已经基本上站在大门之前了,但离入门,还有一段距离,请继续观看下一篇博客。

相关文章:

C语言学习_DAY_3_基本数据类型_运算符与表达式【C语言学习笔记】

目录 I. 基本数据类型 II. 复杂的输出和输入语句编写 III. 运算符与表达式 III.I 算术运算符 III.II 关系运算符 III.III 逻辑运算符 III.IV 位运算符 III.V 三目运算符 III.VI 逗号运算符 高质量博主&#xff0c;点个关注不迷路&#x1f338;&#x1f338;&#x1f3…...

c++练习题(4)

题号&#xff1a;1 设int a3&#xff0c;b2&#xff1b;则a*b的结果是&#xff08;&#xff09; A、2 B、7 C、3 D、8 题号&#xff1a;2 一个程序单位中不包括以下哪项&#xff08;&#xff09; A、伪代码 B、函数 C、预处理指令 D、全局声明 题号&#xff1a;3 若a-14,…...

腾讯云 cos 字体在CDN上跨域处理

问题描述&#xff1a;项目中用到了字体的静态资源&#xff0c;把静态资源放到了腾讯云对象存储提供的 COS 上&#xff0c;同时启用它的CDN来加速。但是&#xff0c;调试的过程中发现报错&#xff1a;CSS加载字体跨域了&#xff0c;字体图标无法正常显示。 原因&#xff1a;字体…...

api是什么意思?又该如何使用呢?

一、应用程序编程接口 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节。 API全称 "…...

JavaScript------面向对象

目录 一、面向对象编程&#xff08;OOP&#xff09; 基本概念 二、类 1、语法 2、通过类创建对象 3、类的属性 4、类的方法 5、构造函数 三、面向对象的三个特点 1、封装 如何确保数据的安全&#xff08;实现封装的方式&#xff09;&#xff1a; 2、继承 在子类中&a…...

charles+夜神模拟器抓包

1.资料地址: 链接&#xff1a;https://pan.baidu.com/s/1w9qYfFPJcduN4If50ICccw 提取码&#xff1a;a7xa2.安装charles 和夜神模拟器并配置参考地址: https://www.beierblog.com/archives/%E4%BA%B2%E6%B5%8B%E5%AE%8C%E5%85%A8%E5%8F%AF%E8%A1%8Ccharles%E6%8A%93%E5%8C%85%E…...

【STC15单片机】模拟I2C操作AT24C02数据读取【更新中】

目录 I2C时序结构 I2C代码 AT24C02代码&#xff08;继承I2C底层代码&#xff09; PCF8591 PCB上线的长短可能影响数据传输的时间&#xff0c;写I2C时序可能就要加一点延时 I2C时序结构 起始条件&#xff1a;SCL高电平期间&#xff0c;SDA从高电平切换到低电平终止条件&…...

Hadoop

Hadoop Hadoop1.x 2.x 3.x区别 Hadoop1.x组成&#xff1a;MapReduce负责计算和资源调度&#xff0c;HDFS负责数据存储&#xff0c;Common辅助工具。 Hadoop2.x组成&#xff1a;MapReduce负责计算&#xff0c;Yarn负责资源调度&#xff0c;HDFS负责数据存储&#xff0c;Commo…...

ArrayList源码+扩容机制分析

1. ArrayList 简介 ArrayList 的底层是数组队列&#xff0c;相当于动态数组。与 Java 中的数组相比&#xff0c;它的容量能动态增长。在添加大量元素前&#xff0c;应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。 ArrayLis…...

数据库(第四次作业)

学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (Sno, Cno, Score)…...

传统档案管理,为什么影响企业上市进度?

企业上市&#xff0c;对于很多创业者来说&#xff0c;是他们奋发努力的首要目标。企业通过上市&#xff0c;进行股权融资&#xff0c;扩大经营规模&#xff0c;加速促进公司成长&#xff0c;最终达到企业的可持续发展。而要实现成功上市&#xff0c;企业除了需要满足股份公司上…...

9个EXCEL舍入函数公式的用法和实例

用法和实例 1. ROUND ROUND函数可以将数字四舍五入到指定的小数位数。 语法&#xff1a;ROUND(number, num_digits) number&#xff1a;要四舍五入的数字。 num_digits&#xff1a;要保留的小数位数。 举例&#xff1a; ROUND(3.14159,2)&#xff0c;结果为3.14 ROUND(3.141…...

设计模式:代理模式给原始类附加功能

一、代理模式 1、定义 在不改变原始类&#xff08;被代理类&#xff09;的情况下&#xff0c;通过引入代理类来给原始类附加功能。 一般情况下&#xff0c;让代理类和原始类实现同样的接口。 但是&#xff0c;如果原始类并没有定义接口&#xff0c;并且原始类代码并不是我们…...

JavaScript刷LeetCode拿offer-链表篇

一、链表 链表&#xff08;Linked List&#xff09;是一种常见的基础数据结构&#xff0c;也是线性表的一种。 一个线性表是 n 个具有相同特性的数据元素的有限序列&#xff0c;线性表的存储结构分为两类&#xff1a;顺序表&#xff08;数组&#xff09;和链表。 链表相比较顺…...

CPP2022-28-期末模拟测试01

6-1 实现一个计算三角形面积的简单函数&#xff08;假设输入的边长合理&#xff09;。 分数 10 全屏浏览题目 切换布局 作者 王和兴 单位 东北大学秦皇岛分校 实现一个计算三角形面积的简单函数&#xff08;假设输入的边长合理&#xff09;。 函数接口定义&#xff1a; do…...

牛客网Python篇数据分析习题(五)

1.现有牛客网12月每天练习题目的数据集nowcoder.csv。包含如下字段&#xff08;字段之间用逗号分隔&#xff09;&#xff1a; user_id:用户id question_id&#xff1a;问题编号 result&#xff1a;运行结果 date&#xff1a;练习日期 请你统计答对和答错的总数分别是多少。 imp…...

华为OD机试真题JAVA实现【人数最多的站点】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出说明解题思路核心知识点Code运行结果版权说...

ROS2机器人编程简述humble-第四章-IMPROVED DETECTOR .4

ROS2之TF2小练习-颜色随机器人和障碍物直接距离变化ROS2之TF2小练习-有哪些bug找找看里面给出了&#xff1a;ROS2机器人编程简述humble-第四章-BASIC DETECTOR .3需要改进哪些地方呢&#xff1f;检测之后&#xff0c;距离不变了……如何变化&#xff1f;这个问题可以问chatgpt吗…...

依存句法分析 -- tag和dep释义

依存句法分析&#xff08;Dependency Parsing, DP&#xff09;是通过分析语言单位内成分之间的依存关系揭示其句法结构&#xff0c;主张橘子 中核心动词是支配其它成分的中心成分&#xff0c;而它本身却不受其他任何成分的支配&#xff0c;所有受支配成分都以某种关系从属于支配…...

服务器常见的网络攻击以及防御方法

网络安全威胁类别 网络内部的威胁&#xff0c;网络的滥用&#xff0c;没有安全意识的员工&#xff0c;黑客&#xff0c;骇客。 木马攻击原理 C/S 架构&#xff0c;服务器端被植入目标主机&#xff0c;服务器端通过反弹连接和客户端连接。从而客户端对其进行控制。 病毒 一…...

Python期末复习知识点大合集(期末不挂科版)

Python期末复习知识点大合集&#xff08;期末不挂科版&#xff09; 文章目录Python期末复习知识点大合集&#xff08;期末不挂科版&#xff09;一、输入及类型转换二、格式化输出&#xff1a;字符串的format方法三、流程控制四、随机数生成五、字符串六、序列索&#xff08;含字…...

Echarts 雷达图设置拐点大小和形状,tooltip后文字不居中对齐

第017个点击查看专栏目录Echarts的雷达图的拐点大小和形状是可以设置的&#xff0c;在series中设置symbol 相应的属性即可。 使用tooltip的时候&#xff0c;默认状态文字是居中对齐的&#xff0c;不好看。需要在tooltip属性中设置一下&#xff0c;如图所示&#xff0c;效果比较…...

Lesson 7.1 无监督学习算法与 K-Means 快速聚类

文章目录一、聚类算法与无监督学习二、K-Means 快速聚类的算法原理1. K-Means 快速聚类的基本执行流程2. K-Means 快速聚类的背后的数学意义三、K-Means 快速聚类的 sklearn 实现方法1. sklearn 中实现 K-Means 快速快速聚类2. 轮廓系数基本概念与 sklearn 中实现方法从现在开始…...

优维低代码:Legacy Templates 构件模板

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 连载…...

最全面的SpringBoot教程(五)——整合框架

前言 本文为 最全面的SpringBoot教程&#xff08;五&#xff09;——整合框架 相关知识&#xff0c;下边将对SpringBoot整合Junit&#xff0c;SpringBoot整合Mybatis&#xff0c;SpringBoot整合Redis等进行详尽介绍~ &#x1f4cc;博主主页&#xff1a;小新要变强 的主页 &…...

信息安全保障

信息安全保障信息安全保障基础信息安全保障背景信息安全保障概念与模型基于时间的PDR模型PPDR模型&#xff08;时间&#xff09;IATF模型--深度防御保障模型&#xff08;空间&#xff09;信息安全保障实践我国信息安全保障实践各国信息安全保障我国信息安全保障体系信息安全保障…...

windows/linux,mosquitto插件mosquitto-auth-plug说明,重点讲解windows下

先贴代码,再讲方法 #ifndef AUTH_PLUG_H #define AUTH_PLUG_H#ifdef _WIN32 #ifdef AUTH_PLUG_EXPORTS # define AUTH_PLUG_AP...

GWAS:mtag (Multi-Trait Analysis of GWAS) 分析

mtag (Multi-Trait Analysis of GWAS)作用&#xff1a;通过对多个表型相似的GWAS summary结果进行联合分析&#xff0c;发现更多的表型相关基因座。 以抑郁症状、神经质和主观幸福感这三个表型为例&#xff0c;分别对他们进行GWAS分析&#xff0c;鉴定得到32、9 和 13个基因座与…...

MATLAB--imadjust函数

目录 一、功能 二、使用 1.格式 2.具体用法 3.代码 总结 一、功能 功能&#xff1a;通过灰度变换调整对比度 二、使用 1.格式 Jimadjust(I,[low high],[bottom top],gamma)2.具体用法 将图像I中的灰度值映射到J中的新值&#xff0c;即将灰度在[low high]之间的值映射到…...

前端开发这次几个非常经典的常用技巧,学会了之后事半功倍

对于一个刚入前端的新手来说&#xff0c;在前端开发过程中会遇到各种各样的麻烦和坑&#xff0c;这样很多时候回让开发者的信息受到打击&#xff0c;作为一个稍微好一点的前端菜鸟来说&#xff0c;今天就给刚入前端的新手们分享一些比较实用的开发技巧&#xff0c;让之少走一些…...

wordpress页面/营销管理培训课程培训班

1.在item级加触发器&#xff1a;key-listval&#xff1a;calendar.show; 2.修改该item属性&#xff1a; list of values &#xff1a;选择&#xff1a;enable_list_lamp&#xff1b; list y position: 设置为2.&#xff08;随意&#xff09; 是否从list验证&#xff1a;设置为n…...

openwrt wordpress/如何提高网站排名seo

Linux提供了大量的命令&#xff0c;利用它可以有效地完成大量的工 作&#xff0c;如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以&#xff0c;在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统&#xff0c; 就必须从Linux命令学起&#xf…...

药企做网站需要哪些手续/大侠seo外链自动群发工具

虚拟机中Linux系统配置YUM源 1.首先我们查看自己的虚拟机有没有yum源&#xff0c;命令为 [rootred ~]# ls /etc/yum.repos.d/ (没有yum源&#xff09;如果这里显示找不到文件&#xff0c;就代表没有yum源&#xff0c;如果显示有文件&#xff0c;那就代表有yum源。 2.没有yum源…...

商城网站开发的完整流程图/重庆好的seo平台

题意:放学了&#xff0c;WNJXYK准备带点书回去&#xff0c;他有N本书&#xff0c;书包容量为C。(1 ≤ N ≤ 100000, 1 ≤ C ≤ 10000) 每本书有相应价值Vi和要占的容量Ci&#xff0c;现在问你WNJXYK最多可以带多少价值的书回去&#xff1f; (0 ≤ Vi , Ci ≤ 10) 直接01背包就超…...

网站建设 工具/新闻播报最新

1&#xff1a;按指定大小&#xff0c;分隔集合&#xff0c;将集合按规定个数分为n个部分 /*** 将集合按len数量分成若干个list* param list* param len 每个集合的数量* return*/public static List<List<TotalorderDO>> splitList(List<TotalorderDO> list…...

深圳建网站的公/bt种子搜索

工作几年以来&#xff0c;伴随着接触程序员的面极速增长&#xff0c;我对下面观点的体悟越来越深&#xff1a; 一、其实每个行业都有各自的辛苦 二、控制欲望&#xff0c;做正确的事情&#xff0c;就不累 三、好的程序员并不累&#xff0c;他们乐此不疲 闲聊一下&#xff0…...