数据类型
在上一篇文章中我们多次提到了一个东西——数据类型
其实现在要谈的就是TA了
我们可以把我们输入到计算机内的数据都想象为放在一个个盒子里面,需要的时候拿出来用就叫做
调用
;而这些盒子就叫做变量
;每一个盒子我们都要给TA取一个名字,就叫做变量名
,我们还必须告诉计算机这个盒子叫什么,这就叫做定义
或者申明
,而且不同大小不同款式的盒子还有有姓吧,那就是数据类型
,一个人要有名有姓而且还要户口登记,那么一个变量就要有变量名
有数据类型
而且还要变量申明
(至于有多少数据类型,我们以后分解,当然你也可以查查资料)
这个是我在上一篇文章里就提过的数据类型,下面有一个略微准确的定义:
使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当我们创建一个变量时,就会在内存中保留一些空间。需要存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。
-
为了严谨性和准确性我查了查百度和各种资料 :
百度 -
常量是有类型的数据,变量在某一固定时刻用来存储一个常量,因此也应有相应的类型。如整型变量用来存储整数,实型变量用来存储实数。变量的类型,可以是标准数据类型int、short、long、float、double和char等,也可以是用户自定义的各种类型。(其实吧数据类型就是变量的类型):
数据类型 - 对于基本的数据类型我们可以用以下的修饰词进行修饰:
- signed(带符号)
- unsigned(无符号)
- short(短)
- long(长)
各数据类型范围和字节
各操作系统可能会有差异,请用下面的测试程序查看自己电脑的情况:
#include<iostream>
#include<string>
#include <limits>
using namespace std;
int main()
{
cout << "bool: \t\t" << "所占字节数:" << sizeof(bool);
cout << "\t最大值:" << (numeric_limits<bool>::max)();
cout << "\t\t最小值:" << (numeric_limits<bool>::min)() << endl;
cout << "char: \t\t" << "所占字节数:" << sizeof(char);
cout << "\t最大值:" << (numeric_limits<char>::max)();
cout << "\t\t最小值:" << (numeric_limits<char>::min)() << endl;
cout << "signed char: \t" << "所占字节数:" << sizeof(signed char);
cout << "\t最大值:" << (numeric_limits<signed char>::max)();
cout << "\t\t最小值:" << (numeric_limits<signed char>::min)() << endl;
cout << "unsigned char: \t" << "所占字节数:" << sizeof(unsigned char);
cout << "\t最大值:" << (numeric_limits<unsigned char>::max)();
cout << "\t\t最小值:" << (numeric_limits<unsigned char>::min)() << endl;
cout << "wchar_t: \t" << "所占字节数:" << sizeof(wchar_t);
cout << "\t最大值:" << (numeric_limits<wchar_t>::max)();
cout << "\t\t最小值:" << (numeric_limits<wchar_t>::min)() << endl;
cout << "short: \t\t" << "所占字节数:" << sizeof(short);
cout << "\t最大值:" << (numeric_limits<short>::max)();
cout << "\t\t最小值:" << (numeric_limits<short>::min)() << endl;
cout << "int: \t\t" << "所占字节数:" << sizeof(int);
cout << "\t最大值:" << (numeric_limits<int>::max)();
cout << "\t最小值:" << (numeric_limits<int>::min)() << endl;
cout << "unsigned: \t" << "所占字节数:" << sizeof(unsigned);
cout << "\t最大值:" << (numeric_limits<unsigned>::max)();
cout << "\t最小值:" << (numeric_limits<unsigned>::min)() << endl;
cout << "long: \t\t" << "所占字节数:" << sizeof(long);
cout << "\t最大值:" << (numeric_limits<long>::max)();
cout << "\t最小值:" << (numeric_limits<long>::min)() << endl;
cout << "unsigned long: \t" << "所占字节数:" << sizeof(unsigned long);
cout << "\t最大值:" << (numeric_limits<unsigned long>::max)();
cout << "\t最小值:" << (numeric_limits<unsigned long>::min)() << endl;
cout << "double: \t" << "所占字节数:" << sizeof(double);
cout << "\t最大值:" << (numeric_limits<double>::max)();
cout << "\t最小值:" << (numeric_limits<double>::min)() << endl;
cout << "long double: \t" << "所占字节数:" << sizeof(long double);
cout << "\t最大值:" << (numeric_limits<long double>::max)();
cout << "\t最小值:" << (numeric_limits<long double>::min)() << endl;
cout << "float: \t\t" << "所占字节数:" << sizeof(float);
cout << "\t最大值:" << (numeric_limits<float>::max)();
cout << "\t最小值:" << (numeric_limits<float>::min)() << endl;
cout << "size_t: \t" << "所占字节数:" << sizeof(size_t);
cout << "\t最大值:" << (numeric_limits<size_t>::max)();
cout << "\t最小值:" << (numeric_limits<size_t>::min)() << endl;
cout << "string: \t" << "所占字节数:" << sizeof(string) << endl;
// << "\t最大值:" << (numeric_limits<string>::max)() << "\t最小值:" << (numeric_limits<string>::min)() << endl;
cout << "type: \t\t" << "************size**************"<< endl;
return 0;
}
——[来自《信息学奥数一本通(C++版)》]
那么概念说这么多也没什么意义,就是大概了解一下有一个大致的框架,剩下的就靠实践来理解了。
- 接着来解决小茗同学的问题:
- 现在我们要帮小茗完成后面的更难的一些题目,在题目中出现了有小数点的数,本着帮人帮到底,送佛送到西的原则,我们就帮他解决这个问题吧。
- 我们还是先来做加法的运算,首先来分析:
- 现在我们要帮小茗完成后面的更难的一些题目,在题目中出现了有小数点的数,本着帮人帮到底,送佛送到西的原则,我们就帮他解决这个问题吧。
在运算上这个的需求和我们之前写过的那个程序是一模一样,怪就怪在TA是有小数的运算: 那我们就直接定义一个可以装小数的变量就行了啊
-
我们现在来选择类型,稍微选择一下我们可以得到:
数据类型选择
- 那就好了嘛,在没有准确的精度和数据要求时候我们就随意在这三个里面选就是了,建议使用
double
TA比fioat
更精确,在相同的范围内所占内存仅为long double
的一半,当然还是要注意一些题目的要求不能盲目自信
那么剩下的就和之前一样了。
加法:
/*开头的三行就不用多做解释了,
有问题请看上一篇,
后面就不做解释了。
*/
#include<iostream>
using namespace std;
int main()
{
//我们先申明三个变量a,b,sum
double a,b,sum;
//利用cin从键盘读入a,b两个变量的值
cin>>a>>b;
//计算出a+b的值sum
sum=a+b;
//输出sum的值
cout<<sum<<endl;
return 0;
}
如果不想定义三个变量也可这样:
/*开头的三行就不用多做解释了,
有问题请看上一篇,
后面就不做解释了。
*/
#include<iostream>
using namespace std;
int main()
{
//我们先申明两个变量a,b
double a,b;
//利用cin从键盘读入a,b两个变量的值
cin>>a>>b;
//输出a+b的值
cout<<a+b<<endl;
return 0;
}
这样写是因为c++中的输出语句中是允许有表达式的,看个人喜好而定吧
网友评论