C++ 变量数据类型转换
教程导读
学研发网的这篇信息学奥赛技术教程文章主要介绍了C++ 变量数据类型转换,现在分享给大家,供学习和参考。文章包含3106字,纯文字阅读大概需要8分钟。
教程信息
学习目标:
了解并理解强制类型转换的基本概念
掌握不同数据类型之间强制类型转换的方法
了解类型转换的规则
什么是强制类型转换
强制类型转换,就是把一种数据类型转化为另一种指定的数据类型。
它是一种临时的转换。
我们先来看下一个整型的除法运算:
int a = 9; // 数学计算应该是4.5, // 但是这里的结果是4,省略了小数点。 cout << a/2 << endl;
这里的结果是 4,是因为小数点默认被舍去了,C++会给我们的程序做数据转换(转换成了整数int)。
一、C++的数据类型:高类型和低类型
高类型
指的是长度比较大的数据类型,
低类型
指的是长度比较小的数据类型。
二、类型转换格式
格式:(数据类型) (表达式)
即:(要被转换成的类型)(被转换的式子);
注意:类型名或者表达式至少要有一个被括号括起来。
三、变量的类型转换规则
1、高类型可以保存低类型的值,在运算中可以自动转换为高类型的;
// float 是高类型的,9是整数,是低类型的 float f = 9; // 2是int类型,计算后得到的是高类型的 cout << f/2 << endl;
2、字符类型可以用 char 类型保存,也可以用 int 类型保存;
int a = 'a'; char b = 'b'; cout << a <<endl; // 97 cout << b <<endl;
3、int类型可以使用int类型保存,也可以使用 long long类型、float类型、double类型保存;
但是如果float类型、double类型保存为int类型,会导致小数位数丢失;
小数可以使用float类型或double类型,建议优先使用double类型;
double d = 3.14; cout << d << endl; // 3.14默认为double类型, e的结果是3 int e = 3.14; cout << e << endl;
4、类型之间可以强制转换
整型转换成浮点型
例如:输出5/2的小数结果,可以这么写:
int a=5; cout<<(double)a/2;
这么写就相当于先把a转化成double类型,再除以2。这样的话与5.0/2的道理是一样的,这里的a只是临时转化成浮点型。再次输出
整型转换成浮点型其他写法
把整型变量a转换成浮点型除了(double)a这种写法外还有其他两种写法,分别是:
// 写法一 (double)a // 写法二 double(a) // 写法三 (double)(a)
通过上面三种写法可以看出,要把整型变量a转换成浮点型,在a或者double外至少要有一对小括号。
浮点型转换成整型
例如:输出5.5/2的整数结果,可以这么写:
double a=5.5;
cout<<(int)a/2;
注意:把double变成int进行的操作是取整数部分,不管小数部分是多少,都只要整数部分,如(int)9.9=9;也是临时的转换。
浮点型转换成整型其他写法
把浮点型变量a转换成整型除了(int)a这种写法外也有其他两种写法,分别是:
// 写法一 (int)a // 写法二 int(a) // 写法三 (int)(a)
通过上面三种写法也可以看出,要把浮点型变量a转换成整型,在a或者int外也至少要有一对小括号。
更多练习:通过小括号指定类型(type)进行类型转换
练习:简单练习。
通过小括号指定类型(type)进行类型转换
输入输出:
【输入描述】无 【输出描述】过程信息展示 【样例输入】无 【样例输出】无
参考代码:
// 整数int类型 强制转换为 double 类型 // 写法一 double a = (double)3; // 写法二 a = double(3); // 写法三 a = (double)(3); cout << a << endl; // 小数3.14 强制转换为 int 类型 int b = (int)3.14; cout << b << endl; // 数字 97 转换为 字符类型 char c = (char)97; cout << c << endl;
执行结果:
四、编程练习
练习:综合练习
作业1:写一个整数,将它转换为double类型?
作业2:查资料,看看字母 A 对应的整数的值是什么?
#include <iostream> using namespace std; int main(){ int a = 100; cout << "a是:" << a <<endl; double aChange = (double)a; cout << "aChange是:" << aChange <<endl; char infoA = (char)97; cout << "infoA 是:" << infoA <<endl; int infoANubmer = 'A'; cout << "infoANubmer是:" << infoANubmer <<endl; return 0; }
执行结果:
练习:整型转换浮点型 考试奖励
老师准备买n斤糖果平均分给五个在本学期取得优异成绩的学生,买的时候发现商场做活动,买n斤送一斤,请问每名同学能分到多少斤糖果?
输入输出:
【输入描述】一行,一个正整数n 【输出描述】每位优异学生分得的糖果 【样例输入】5 【样例输出】1.2
参考代码:
#include <iostream> using namespace std; int main( ) { int n; cin>>n; cout<<double(n+1)/5; return 0; }
执行结果:
练习:整型转换浮点型 老师奖励
老师还准备买m个棒棒糖分给本学期进步较大的两位学生,一种可以将单个棒棒糖掰开来平分;一种是平分完整的棒棒糖,剩余的老师留着。问这两位学生按这两种分法分别能获得多少个棒棒糖?
输入输出:
【输入描述】一行,一个正整数m,表示棒棒糖的数量 【输出描述】一行,分别是两种方式分得的棒棒糖,空格隔开 【样例输入】7 【样例输出】3.5 3
参考代码:
#include <iostream> using namespace std; int main( ) { int n; cin>>n; cout<<double(n)/2<<" "<<n/2; return 0; }
执行结果:
练习:浮点型转整型 分月饼:
姐弟两分月饼,一盒月饼有N个月饼。弟弟事先先吃了半个。问姐姐和弟弟现在还能平均分得几个完整的月饼。
输入输出:
【输入描述】一行,一个正整数n,表示乐乐买的饼的数量 【输出描述】一个整数,表示每个人能分得的完整饼数 【样例输入】9 【样例输出】4
参考代码:
#include <iostream> using namespace std; int main( ) { int n; cin>>n; cout<<int(n-0.5)/2; return 0; }
执行结果:
练习:综合练习 分离数字的整数部分和小数部分
输入一个小数a,分别输出a的整数部分和小数部分。
输入输出:
【输入描述】一行,一个小数a 【输出描述】两个整数,空格隔开 【样例输入】10.24 【样例输出】10 0.24
参考代码:
#include <iostream> using namespace std; int main( ) { double a; cin>>a; cout<<(int)a<<" "<<a-(int)a; return 0; }
执行结果:
教程咨询
如果章节内容看不懂,可以联系作者。
教程总结
以上是学研发网为您提供C++ 变量数据类型转换的全部内容,希望教程文章能够帮你了解学习C++ 变量数据类型转换,解决所遇到的问题。 如果觉得学研发网信息学奥赛教程内容还不错,欢迎将学研发网网站推荐给身边需要的人。
教程备注
版权声明:教程内容为学研发网整理和编写,如需转载请联系站长并附上文章原始链接和原始作者信息。
手机阅读
扫描二维码推送至手机访问。
本文链接:http://www.xueyanfa.com/xinaojiaocheng/xinaocpp-31.html