整型(没有小数部分的数字)
C++的基本整型(按宽度递增的顺序排列)分别是char、short、int、long、long long,其中char类型最常用来表示字符,而不是数字。
整型 short、int、long和long long
C++提供了一种灵活的标准,确保了最小长度:
- short至少16位;
- int 至少与short一样长;
- long至少32位,且至少与int一样长;
- long long至少64位,且至少与long一样长。
通常而言:short为16位(2个字节),long 为32位 (4个字节),int的宽度可以是16位(2个字节)、24位(3个字节)或32位(4个字节),甚至可以是64位(8个字节)
如何判断当前编程环境下的变量名内存大小可用运算符sizeof,如
#include <iostream>
using namespace std;
int main()
{
int m_vetor;
cout << "int is" << sizeof(m_vetor)<<"bytes."<<endl;
return 0;
}
输出结果为:
int is 4 bytes.
使用C++中cout输出流输出数据的不同方式(十进制,八进制,十六进制):
#include <iostream>
using namespace std;
int main()
{
int i{352};
cout << "i 的十进制表示 "<<dec<<i<< endl;
cout << "i 的八进制表示 "<<oct<<i<< endl;
cout << "i 的十六进制表示 "<<hex<<i<< endl;
return 0;
}
输出结果为:
i 的十进制表示 352
i 的八进制表示 540
i 的十六进制表示 160
char类型:字符和小整数
成员函数:cout.put()
函数cout.put()用于显示变量ch和一个字符常量
#include <iostream>
using namespace std;
int main()
{
cout.put('A');
return 0;
}
输出结果为:
A
如果将char用作数值类型,则unsigned char 和 signed char 之间的差异将非常重要。unsigned char 类型的表示范围通常为0~255,而 signed char表示范围为-128~127
const 限定符
与#define语句的说明(预处理器方法)类似,C++使用const 关键字来修改变量声明和初始化。
#include <iostream>
using namespace std;
const int Month =12;
int main()
{
cout << Month<<endl;
return 0;
}
程序输出为:12
常量(如Month)被初始化后,其值就被固定了,编译器将不允许再修改该常量的值,值得注意的是C++中,可以用const的值来声明数组长度。
浮点数
浮点数能够表示带小数部分的数字,如果数字过大,无法表示为long类型,则可以使用浮点类型来表示。对于带小数部分的数字,计算机将对这样的值分为两部分进行存储。一部分表示值,另一部分用于对值进行放大或缩小。如,对于数字64.1245和34124.5,他们除了小数点的位置不同外,其他都是相同的。可以把第一个数表示为0.341245()基准值和100(缩放因子),而将第二个数表示为0.341245(基准值相同)和10000(缩放因子更大)。C++内部表示浮点数的方法与此相同,只不过它基于的是二进制数,因此缩放因子是2的幂,不是10的幂。所以小数表示在计算机存储中是近似的。
书写浮点数
#include <iostream>
using namespace std;
int main()
{
cout << 12.34E5<<endl;
cout << 12.34E-5<<endl;
cout << 12.34E+5<<endl;
return 0;
}
输出结果为:
1.234e+006
0.0001234
1.234e+006
C++也有三种浮点类型:float、double、long double 其中float至少32位,double至少48位,long doule为80、96或128位。
#include <iostream>
using namespace std;
int main()
{
float a = 2.34e+22f;
float b = a + 1.0f;
cout <<" a = "<<a<<endl;
cout << " b - a = "<< b-a<<endl;
return 0;
}
输出结果:
a = 2.34e+022
b - a = 0
该程序结果应为1,2.34E+22是一个小数点左边有23位的数字。加上1之后,是在第23位之后加1,但float类型能表示的数字的前6位或前7位,因此修改第23位对该值无任何影响。
例程:
#include <iostream>
using namespace std;
const int gl_dayhour = 24;
const int gl_daymin = 60;
const int gl_daysec = 60;
int main()
{
long m_putsec;
int m_day,m_hour,m_min,m_sec;
cout << "Enter the number of seconds :";
cin >> m_putsec;
m_day = static_cast<int>(m_putsec/(gl_dayhour*gl_daymin*gl_daysec));
m_hour = static_cast<int>((m_putsec%(gl_dayhour*gl_daymin*gl_daysec))/(gl_daymin*gl_daysec));
m_min = static_cast<int>(((m_putsec%(gl_dayhour*gl_daymin*gl_daysec))%(gl_daymin*gl_daysec))/gl_daysec);
m_sec = static_cast<int>(((m_putsec%(gl_dayhour*gl_daymin*gl_daysec))%(gl_daymin*gl_daysec))%gl_daysec);
cout <<m_putsec<< "seconds = "<<m_day<<" days, "<<m_hour<<" hour, "<<m_min <<" minutes, "<<m_sec<<" seconds " ;
return 0;
}
运行结果如下:
Enter the number of seconds :31600000
31600000seconds = 365 days, 17 hour, 46 minutes, 40 seconds