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

本文介绍了C语言中的基本数据类型,包括整型、短整型、长整型、浮点型和字符型,并展示了如何在输出语句中使用这些类型。此外,还讨论了复杂的输出语句编写,如如何同时输出变量和文本。接着,文章探讨了运算符与表达式,包括算术运算符(加、减、乘、除、取余)、自增自减运算符以及关系运算符。这些基础知识是理解C语言程序设计的关键。
摘要由CSDN通过智能技术生成

目录

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳探戈的小龙虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值