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

news2024/11/28 8:22:20

目录

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语言学习或编程学习,已经基本上站在大门之前了,但离入门,还有一段距离,请继续观看下一篇博客。

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

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

相关文章

电脑怎么备份文件?含泪分享3种免费的方法

电脑里面保存着我们很多文件数据&#xff0c;比如工作文档、珍贵的照片、喜欢的音乐或者视频等。你很可能会遇到下面的原因而丢失数据&#xff1a;清空回收站&#xff0c;或者使用永久删除文件的方法&#xff1b;电脑出现故障&#xff0c;比如硬盘故障、系统崩溃&#xff1b;病…

Python实现基于openCV+百度智能云平台实现《1:N人脸考勤机》文章最后附带源码!

目录 一、 项目介绍 1.1 项目名称 1.2 项目简介 1.3 项目物料 1.4 技术栈 二、 项目架构 三、项目细节 3.1 环境搭建 3.2 利用opencv实现摄像头调取及相关图像的采集 3.3 利用aips上传图像和结果返回 3.4 结果优化和处理 3.5 可扩展性 3.6 遗留问题和…

中睿天下获评2022年度中关村网信联盟工业互联网标准工作特别贡献奖

近日&#xff0c;中关村网络安全与信息化产业联盟&#xff08;简称“CCAIA”&#xff09;于线上召开联盟第二届第五次会员大会&#xff0c;来自全国的联盟成员代表、行业专家等100余人出席会议&#xff0c;共同听取了联盟2022年工作总结与2023年工作计划&#xff0c;大会设置了…

春招Leetcode刷题日记-D2-贪心算法-训练专题

D2-贪心算法-训练专题贪心算法使用总结力扣605. 种花问题思路代码力扣763. 划分字母区间思路代码另一种思路贪心算法使用总结 当我们意识到&#xff0c;满足贪心算法三要素时候&#xff0c;解决贪心算法问题的时候&#xff0c;一定要遵循的步骤&#xff1a; 1、读懂题目限制条…

数据结构与算法:7种必须会的排序以及3种非基于比较排序

1.什么是排序 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序…

大数据专业职业前景如何

大数据专业毕业生未来的岗位选择空间比较大&#xff0c;有三大类岗位可选择分别是大数据开发岗位、大数据分析岗位和大数据运维岗位&#xff0c;在不同的行业和技术体系结构下这些岗位也包含很多细分的岗位。 大数据开发岗位分为平台研发岗位和行业场景开发岗位两大类&#xf…

usbmon---Linux下USB数据传输监控

文章目录Usb包的总类&#xff08;1&#xff09;令牌包&#xff08;2&#xff09;数据包&#xff08;3&#xff09;握手包&#xff08;4&#xff09;特殊包Usb包的事务usb四种传输类型批量传输等时传输中断传输控制传输usbmon的使用&#xff08;1&#xff09;首先检测内核是否支…

算法刷题打卡第90天:表现良好的最长时间段

表现良好的最长时间段 难度&#xff1a;中等 给你一份工作时间表 hours&#xff0c;上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候&#xff0c;那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」&#xff0c;意味在这…

常量const、引用、指针的大杂烩

文章目录1 普通引用1.1 对普通值的普通引用1.2 对常量值的普通引用1.3 对普通指针的普通引用1.4 对常量指针的普通引用1.5 对指针常量的普通引用1.6 对指向常量的指针常量的普通引用2 常量引用2.1 对普通值的常量引用2.2 对常量值的常量引用2.3 对普通指针的常量引用2.4 对常量…

2023年留学基金委(CSC)西部/地方合作项目选派办法及解读

2023年2月13日国家留学基金委&#xff08;CSC&#xff09;官方网站发布了2023年西部地区人才培养特别项目、地方合作项目通知。知识人网小编现将其选派工作流程及选派办法原文转载并加以解读、提出建议。知识人网建议1. 邀请函是公派申请的必备条件。对于外语语言证明未达标者&…

React学习笔记(番外二)——列表多选批量处理复合组件

React学习笔记&#xff08;番外二&#xff09;——列表多选批量操作复合组件前言〇、Show you the code一、 任务分析及拆解表头行的Checkbox——总开关记录行的Checkbox——行级开关二、 基础实现表头行的文件——header-row.js记录行的文件——record-row.js页面的文件App.js…

Linux操作系统学习(进程退出)

文章目录进程终止退出码进程退出场景进程退出的方式进程终止 退出码 ​ 我们知道每个main函数结尾都有return&#xff0c;一般都是return 0&#xff0c;用echo $&#xff1f;就可以查看它的退出码&#xff0c;0就是他的退出码&#xff0c;也可以写一些别的数值&#xff0c;比…

微服务项目【网关服务限流熔断降级分布式事务】

网关服务限流熔断降级 第1步&#xff1a;启动sentinel-dashboard控制台和Nacos注册中心服务 第2步&#xff1a;在网关服务中引入sentinel依赖 <!-- sentinel --> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-…

好好学react源码然后惊艳所有人

hello&#xff0c;这里是潇晨&#xff0c;今天我们来聊聊react源码&#xff0c;作为使用react多年的前端工程师&#xff0c;我们是否还在使用着各种应用层面的库、框架呢&#xff0c;是否在面试过程中遇到一些关于react源码方面的问题呢&#xff0c;如果是&#xff0c;那么是否…

数据结构与算法:java对象的比较

1.基本类型的比较 在Java中&#xff0c;基本类型的对象可以直接比较大小。 public class TestCompare {public static void main(String[] args) {int a 10;int b 20;System.out.println(a > b);System.out.println(a < b);System.out.println(a b);char c1 A;char…

互联网舆情监测公司监测哪些内容,TOOM北京舆情监测公司

互联网舆情监测公司是一种提供舆情监测、分析和管理服务的公司&#xff0c;其业务主要涉及互联网舆情监测、数据分析、报告撰写、危机处理等方面。这些公司通过使用各种技术和工具&#xff0c;帮助客户监测他们在互联网上的声誉和品牌形象&#xff0c;并提供相应的建议和解决方…

前端基于 Docker 的 SSR 持续开发集成环境实践

项目收益 整体开发效率提升20%。加快首屏渲染速度&#xff0c;减少白屏时间&#xff0c;弱网环境下页面打开速度提升40%。 权衡 在选择使用SSR之前&#xff0c;需要考虑以下事项&#xff01; SSR需要可以运行Node.js的服务器&#xff0c;学习成本相对较高。对于服务器而言&a…

“就业”or“创业”,大学生毕业如何选择,校园市场是新出路?

据公开数据显示&#xff0c;2023届全国高校毕业生预计达到1158万人&#xff0c;同比增加82万人。规模和增量创历史新高。今年就业形势再次复杂严峻起来。 “就业难”这个词在疫情下的毕业季尤为明显。超过1000万人同时加入了争夺就业机会的行列&#xff0c;形成了庞大的求职阵容…

网络安全-靶场搭建

网络安全-靶场搭建 靶场就是给你练习用的&#xff0c;因为如果你直接用其他网站搞会把他搞炸的&#xff08;犯法的&#xff09; 简单概括&#xff1a;把靶场文件放到Phpstudy的网站&#xff0c;放到根目录里面 要用到之前下载的phpstudy 然后开启mysql和apache&#xff0c;默…

【2023】Prometheus-Blackbox_exporter使用

目录1.下载及安装blackbox_exporter2.修改配置文件设置监控内容2.1.使用http方式作为探测3.与prometheus集成4.导入blackbox仪表盘进行观测1.下载及安装blackbox_exporter 下载安装包 wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/black…