C/C++中的常用操作符与强制类型转换

引言:

在前两篇博客,我们详细介绍了C语言的基本数据类型和判断操作,相信大家对此已经有所掌握,在本篇博客,我们将继续介绍C语言中常用的几类操作符。

一.算数操作符

在写代码中,一定会涉及到计算问题,为此,C语言提供了一套操作符,分别是加法:+;减法:-;乘法:*;除法:/;取余数:%;我们依次结合代码讲解。

1.‘+’,‘-’运算符
#include <stdio.h>
int main()
{
    int a=10,b=100;
    printf("%d",a+b);//答案为110
    printf("%d",a-b);//答案为-90
    return 0;
}
2.‘*’运算符
#include <stdio.h>
int main()
{
    int a=10,b=100;
    printf("%d",a*b);//答案为1000
    return 0;
}
3.‘/’运算符
#include <stdio.h>
int main()
{
    int a=6,b=5;
    printf("%d",a/b);//答案为1
    return 0;
}



#include <stdio.h>
int main()
{
    double a=6,b=5;
    printf("%.1lf",a/b);//答案为1.2
    return 0;
}

我们重点观察一下‘/’运算,在数据类型都为int的情况下所得结果也是整形,所以只能保留1,而当我们更改初始数据类型后,我们就可以得到相应的小数,并且我们可以通过“.+数字”的形式来决定我们保留几位小数,如上述例子就是保留一位小数。

4.‘%’运算符
#include <stdio.h>
int main()
{
    int a=100,b=10;
    printf("%d",a%b);//答案为0
    return 0;
}



#include <stdio.h>
int main()
{
    int a=11,b=10;
    printf("%d",a%b);//答案为1
    return 0;
}

如上述代码,‘%’运算符又被称为模运算,其实就是一种取余数的运算,第一串代码余数为0,所以打印1,第二串代码余数为1,所以打印1。

二.赋值操作符

1.‘=’赋值法
#include <stdio.h>
int main()
{
    int a=10;
    int b=100;
    float c=0.3;
    return 0;
}



#include <stdio.h>
int main()
{
    int a=10,b=100;
    int c=b=a+3;
    printf("%d",c);//答案为13,连续赋值
    return 0;
}

如上述例子,创建好一个变量再给一个值,叫做赋值。第二串代码介绍了连续赋值的操作,从右往左执行下去,先执行a+3,赋值给b,b再赋值给c。

2.复合赋值法
#include <stdio.h>
int main()
{
    int a=10,b=100,c=6,d=6;
    a=a+3;
    b=b-3;
    c=c*3;
    d=d/3;
    printf("%d",a);//13
    printf("%d",b);//97
    printf("%d",c);//18
    printf("%d",d);//2
    return 0;
}





#include <stdio.h>
int main()
{
     int a=10,b=100,c=6,d=6;
    a+=3;
    b-=3;
    c*=3;
    d/=3;
    printf("%d",a);//13
    printf("%d",b);//97
    printf("%d",c);//18
    printf("%d",d);//2
    return 0;
}

以上两端带代码所求结果相同,也就是很多时候我们可以简写一些步骤,类似的操作还有“%=”,“^=”等等。我们后期再进行补充

三.单目操作符

1.前置++与后置++

在C语言中,我们有一个++的操作,代表操作数+1,等价于a=a+1;a+=1;但是这个++的作用取决于它的位置,我们以下列代码为例进行讲解:

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






#include <stdio.h>
int main()
{
    int a=10;
    int b=++a;
    printf("%d %d",a,b);//a,b的值均为11
    return 0;
}

对比两段代码,我们会发现,仅仅是++的位置不同,就得到不同的结果,我们也可以发现,前置++先加1后操作,而后置++则是先操作,后加1.

2.前置--与后置--

其实--与++有着异曲同工的作用,仅仅只是操作变为了减法,记忆口诀也可以使用前置先减,后置后减。以下是代码示例:

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






#include <stdio.h>
int main()
{
    int a=10;
    int b=--a;
    printf("%d %d",a,b);//a,b的值均为9
    return 0;
}
3.+和-的使用

在数学上,正数就是前面没有符号或者有个“+”的数(0除外),而负数总是有“-”在它的前方,在计算机中也如此,我们依旧可以省略“+”,但是我们不能省略“-”,下面是一些简单的代码示例:

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

四.强制类型转换

根据它的名字,我们大概可以才想到这个操作是将一种数据类型强制转换为另一种数据类型,比如将浮点数转换为整数或者将整数转换为浮点数。一般的语法形式为:(类型)

下面是代码示例:

#include <stdio.h>
int main()
{
    int a=10;
    float b=(double)a;
    double c=3.14;
    int d=(int)c;
    printf("%d %lf %lf %d",a,b,c,d);//a的值为10,b的值为10.0000000,c的值为3.14,d的值为3
    return 0;
}


注:转换类型需和括号里的类型一致

五.练习巩固

今天需要介绍的几类类型就完成了,那么我们接下来使用一个题目来巩固一下知识点

题目描述

学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v 米每分钟的速度匀速走向学校。

在上学的路上,yyy 还要额外花费 1010 分钟的时间进行垃圾分类。

学校要求必须在上午 8:008:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。

由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。

输入格式

一行两个正整数 s,v,分别代表路程和速度。

输出格式

输出一个 2424 小时制下的时间,代表 yyy 最晚的出发时间。

输出格式为 HH:MMHH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 00。

输入输出样例

输入 

100 99

输出 

07:48

说明/提示

对于 100%的数据,1≤s,v≤10^4。

题目来源:https://www.luogu.com.cn/problem/P5707


希望这篇博客对你有所帮助,也希望你能不吝啬地给我点个赞和关注,更多C/C++资料,题库,项目在我的QQ上2833252491可以添加我找我领取,谢谢你的阅读。

  • 41
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值