c++教程总目录
第一课:c++第一课 输出“Hello word”
第二课:c++第二课 输出自定义字符图形
第三课:c++第三课 关于代码的一些知识
第四课:c++第四课 定义int型变量、变量赋值与输出
第五课:c++第五课 输入
第六课:c++第六课 c++语言常用类型
第七课:c++第七课 加法算数运算
第八课:c++第八课 运算原理
未完待续……
c++第六课 c++语言常用类型
上节课我们学习了int型变量的输入,可以写出一个简单的人机互动界面。这节课我们学习一下不同类型,制作出更有意思的小程序。
在c++语言中,有好多种类型。我们学习的int型是最基本的变量类型,也是最常用的类型之一,所以请先学好int型哦!
数字类型
int型用来定义数字变量,长度是有限制的。
先不聊c++,说点别的。
生活中我们经常用到计算器,初中生应该很喜欢用。但是计算器也有一点不太好,就是算不了太大的数。比如算一个:99999999999999999999999999999999999999999999999999乘上
99999999999999999999999999999999999999999999999999
结果会是:
错误
这是因为计算器最高位溢出造成的。比如一个变量只能存个位数,你非要算个9+1,你说计算器怎么办?只能告诉你:错误。
好了,回到c++。
int型变量的范围是-2147483648~2147483647
也就是说,在一个加法运算程序中,你不能让两个变量加起来大于2147483647或小于-2147483647。如果超出这个范围,根据我的经验,会输出2147483647。
当然,你输出的也有可能不是这个值,可能是个定值,就是说每次运行这个程序输出的这个乱值可能都是一样的;也可能是变化的,每次运行的值不一样。
那就有人说了:这哪行啊?不够我使的!
所以有几种更长的类型:long long、long long ing、unsigned long long
现在就来介绍一下。
1.long long长整型
long long的数据范围:
-9223372036854775807~9223372036854775807
嗯,挺大的。
不过不算太大,比如要写一个计算最大的素数(有没有我不知道)的程序,这么点也就刚够做做热身运动。
对于普通的程序来讲,这些足够了。
定义变量的方式与ing型完全一样:
long long 变量1,变量2,变量n……;
自己可以试试输入。
2.long long int长整型
这个类型与long long类似,有些编译器会编译不通过。
它与long long有什么区别我不知道,希望有人知道告诉我,用起来与long long没啥区别。
3.unsigned long long无符号长整型
什么叫无符号?
这个问题在我刚开始学的时候一直搞不清楚。
关于这个问题,写个算式解决:
1+1=2
其中的符号有两个“+”,一个“=”(每个“1”各一个,第一个“1”省略)
再写一个long long的负数数据范围:
-9223372036854775807
其中的符号是“-”。
那无符号就是:
9223372036854775807
刚才那个小学一年级算式就是:
112
没错吧?
但是这明明是把long long型砍掉一半,所以另一半也不能闲着,那就加到正数的范围上来吧!
所以unsigned long long的数据范围是:
9223372036854775807*2+1=18446744073709551615
加一是因为中间有个0。
同样道理,unsigned int的数据范围是:
2147483648*2+1=4294967297
注意,没有unsigned long long int型!
short短整型
鉴于刚才的学习,就不废话了。
数据类型:-32768~32767
读者:这么少的类型鬼才用!谁这么闲得慌!
的确,这种类型很少用。但有一部分程序很喜欢这个类型。关于这个以后再介绍,我们现在用不到它。
float 单精度浮点型
浮点型,也就是带浮点的数,那带浮点的数不就是小数嘛!
你会发现,前面的数据类型都没法存小数,要是需要求个圆周率,你这程序就不够看了,所以,我们来学习一下浮点型。
定义方式都相同,就不废话了。
你看,之前的类型都是有数据范围的,float也不例外,它的数据范围分为指数部分和尾数部分。这里主要看一下尾数部分。
float小数点后可以存7位有效数据,如果超出这个范围float则四舍五入处理。
关于整数部分,不能存太大的数,比short大点,比int少很多。具体多少我不知道,知道的大神告诉我!
如果整数部分超过范围,就会用科学计数法表示。
看一下下面的程序:
#include<iostream>
using namespace std;
int main()
{
float a=3.1415926535;
cout<<a<<endl;
return 0;
}
输出结果:
再输入一个大点的数:
double双精度浮点型
这种类型可以存储16位尾数,整数部分也比float大。
比赛时建议都用double型,保险。
long double C99新增:多精度浮点型
传统c++里没有这个,在C99里加上的。这种类型没有给出确切的数据范围,它的范围取决使用的编译器。
不过我们可以通过以下程序得知它的数据范围:
#include<iostream>
using namespace std;
int main()
{
cout<<sizeof(long double);
return 0;
}
你不用管什么意思,编译运行,看看结果:
我用的这个编译器定义的long double类型的长度是12字节。12字节是说整数部分的字节数加上尾数部分的字节数一共12字节。一字节等于8位,那么12字节就是12*8=96位。
不过我们不知道它的整数或尾数部分到底是几位。
关于数字类型就到这里,定义方式都是一样的!
字符类型
先给大家看一段程序:
#include<iostream>
using namespace std;
int main()
{
int a;
cin>>a;
cout<<a<<endl;
return 0;
}
编译运行,输入“abc”
你会发现它什么也不输出,或者输出0
这是因为输入的是字符。
我们定义的是int型,属于数字类型,字母不是数字,所以a变量里什么也不是。
1.char字符类型
char类型是一个最基本的字符类型。定义方式和数字类型相同:
char 变量1,变量2,变量n……;
比如这样:
#include<iostream>
using namespace std;
int main()
{
char a;
cin>>a;
cout<<a<<endl;
return 0;
}
输入“a”,看看运行结果:
现在输入“abc”,再看看运行结果:
为什么只输出“a”呢?明明输入的是“abc”啊!
因为字符类型变量“a”只能存储一个字符。多个字符的情况下,只能存储第一个字符。
注意,char类型无法存储汉字!
接着输入,输入“1”,运行结果如下:
但你输入“123”,它只能输出“1”
这里的“1”不是数字“1”,而是字符“1”,数字“1”和字符“1”是不一样的!关于哪不一样我们以后再讲,否则会乱套。
2.string字符串类型
字符串,就是由字符穿起来的“串”。要是你非常热爱字符串,说不定下次吃烧烤时会说:老板,给我来两串字符串!
为解决上面没法输入“abc”的情况,我们开始学习字符串。string类型的定义方式与上面各类型相同:
string 变量1,变量2,变量n……;
你会发现“string”不是一个关键字。但这并不意味着变量可以叫做string。要是看不明白,看下面一行代码:
int string;//错误
这是不行的!
好了,看下面的代码:
#include<iostream>
using namespace std;
int main()
{
string a;
cin>>a;
cout<<a<<endl;
return 0;
}
编译运行,输入“abc”。
再运行,输入“武汉加油!中国加油!”
所以string类型可以输入汉字。
逻辑型
bool布尔类型
bool类型是用来判断真或假的。0时为假,否则为真。
这个在比赛中不常用,因为int性变量也可以胜任这一工作。在开发项目中会用到,可以使程序清晰易懂。
看个例程:
#include<iostream>
using namespace std;
int main()
{
bool a=true,b=false;
cout<<a<<' '<<b<<endl;
return 0;
}
运行结果:
也可以这样写:
#include<iostream>
using namespace std;
int main()
{
int a=1,b=0;
cout<<a<<' '<<b<<endl;
return 0;
}
或者这样:
#include<iostream>
using namespace std;
int main()
{
int a=true,b=false;
cout<<a<<' '<<b<<endl;
return 0;
}
都行。
关于bool类型我们以后再说!
由于作者水平有限,文章中难免有误,请大神们给出指正!
上一课:c++第五课 输入
下一课:c++第七课 算数运算