C++语言教程(详解,会更新)——第6篇:基本数据类型之间的转换

对于本系列声明

版权声明

copyright 2019 XyloZebra 原创,请勿抄袭!
转发请注明原贴位置
悄悄地告诉你:这名字分为Xylo和Zebra,是我真名的首字母组成的单词!

系列内容声明

  • 这个系列适合想学C++的菜鸟或略懂一些的人,大佬请绕路而行。
  • 这个系列基本涵盖所有C++基础知识。
  • 参考文献:《零基础学C++》吉林大学出版社
                      百度百科

文章链接

正文

2周没发文了,主要是因为还是个学生党。寄宿不让带电脑,唉。
不过,总算是百忙中抽出空来了。
这篇博文讲一讲C++基本数据类型间的转换(convert),分两种。

隐式转换

隐式转换,一般是指两个不为同类型的变量,不需要通过显式定义的函数或其他过程来粗暴转换,直接就可以相互之间转换。
如:

//隐式转换
int integer=20;
long int long_integer;
long_integer=integer; //直接复制赋值

在几乎所有隐式转换情况中,转换后变量需要的内存都大于转换前需要的内存。这样子就可以确保数据完好无存、没有被截断地被转换了类型。

就比如在x64(64位)编译器中,int类型占4字节,long int类型占8字节。

为了更好地理解,举个例子:

你去旅行,你有一个小包已经装满了,现在要移到大包去,直接移不就好了?

可以隐式转换的两种变量就像大包和小包。

可以隐式转换的变量类型如下:
隐式转换关系图

显式转换

不同于隐式转换,显示转换是主动的。

显示转换需要用到显式转换的运算符

类型 标识符=(另一个类型)标识符;
类型 标识符=另一个类型(标识符);

在显式转换中,我们经常要截断一些数据,才能使数据能被装进容器中。如下:

//example
int a=(int)23.6; //此时a为23
float b=3.4;
a=float(b); //此时a为3

注:学到RTTI(Run-Time Type Identification)时,我们会介绍另一种显式转换:static_cast等函数。

编程挑战

编一个程序,接受用户输入的double型数,将其用“舍去法”进行约值计算,输出。

提示:我们的显式转换是否有“舍去法”的特性呢?
cpp shell写代码

代码参考

一般实现方法

#include <iostream>

using namespace std;

int main()
{
	double prev;
	cin>>prev; //不考虑输入异常
	int output_num=(int)prev;
	cout<<output_num<<endl;
	return 0;
}

函数解法

#include <iostream>

using namespace std;

int convert_d_i(double prev);
int main()
{
	double prev;
	cin>>prev; //不考虑输入异常
	int output_num=convert_d_i(prev);
	cout<<output_num<<endl;
	return 0;
}
int convert_d_i(double prev)
{
	return (int)prev;
}

家庭作业&预习

作业:试编各种隐式转换的程序。

下一节预告:离开入门,向前挺进(ide的安装)
预习:无,已安装ide的可以跳过。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值