对于本系列声明
版权声明
copyright 2019 XyloZebra 原创,请勿抄袭!
转发请注明原贴位置
悄悄地告诉你:这名字分为Xylo和Zebra,是我真名的首字母组成的单词!
系列内容声明
- 这个系列适合想学C++的菜鸟或略懂一些的人,大佬请绕路而行。
- 这个系列基本涵盖所有C++基础知识。
- 参考文献:《零基础学C++》吉林大学出版社
百度百科
文章链接
- 入门篇
# 第1篇:计算机语言的崛起
# 第2篇:Hello C++!
# 第3篇:智能的输出和输入流
# 第4篇:C++变量的那些事儿
# 第5篇:多种多样的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的可以跳过。