C++基本数据类型详解

1、整数类型内存占用情况

1.1、int
默认情况下int占用4个字节
取值范围: -2147483648~+2147483647
最大数值:42亿+
1.2、long int
默认情况下long int 32位机器占用4个字节,64位机器占用8个字节
8字节取值范围:-9223372036854775808~+9223372036854775807
最大数值(8字节):180万亿亿
1.3、long long int
强制使用8个字节
取值范围:-9223372036854775808~+9223372036854775807
最大数值:180万亿亿

1.4、short int

占用2个字节
取值范围:-32768~+32767
最大数值:65535

2、浮点数在内存在的表示方式

2.1、单精度浮点型
符号位S(1) + 指数位E(8) + 有效数字M(23)
1.     符号位表示正负;
2.     指数位值-127表示指数;
3.     有效数字表示小数点后的数值
有效数字为7位长度,第8位不精确
    float f = 1234567890; // 7位有效长度
    printf("%f\n", f);  // 输出结果1234567936.000000
2.2、双精度浮点型
符号位S(1) + 指数位E(11) + 有效数字M(52)
1.     符号位表示正负;
2.     指数位值-127表示指数;
3.     有效数字表示小数点后的数值
有效数字为16位长度,第17位不精确
    double d = 12345678901234567890;// 16位有效数字长度
    printf("%f\n", d);   // 12345678901234567000.000000

3、C++中cout输出符点数

示例代码:

using namespace std;
double d = 1234567890.1234567890;
cout << d << endl; // 默认以float的精度输出
cout.precision(8); // 设置精度8位有效数字长度
cout << d << endl;
cout.flags(cout.fixed); // 设置精度8位为小数点后8位有效长度
cout << d << endl;
cout.unsetf(cout.fixed); // 取消8位有效小数的设置,还原flags默认设置
cout << d << endl;

输出结果为:

1.23457e+009
1.2345679e+009
1234567890.12345670
1.2345679e+009
输入输出示例:
#include <iostream>
#include <Windows.h>

using namespace std;
int main() {
    char type;
    cout << "请选择您需要的类型: " << endl;
    cout << "A、贤惠型" << endl;
    cout << "B、泼辣型" << endl;
    cout << "C、文艺型" << endl;
    cout << "D、运动型" << endl;
    cout << "请输入: ";
    cin >> type;    // scanf("%c", &type);
    cout << "请输入您的身高(单位:厘米): ";
    int height;
    cin >> height;

    cout << "您喜欢的类型是:" << type << ", 您的身高是:" << height << "厘米" << endl;
    system("pause");
    return 0;
}

4、C++基本输入命令cin的简单使用

#include <iostream>
#include <Windows.h>

using namespace std;
int main() {

    int age = 0;
    do {
        if (cin.fail()) {
            cout << "您输入的年龄不合法!" << endl;
        }
        cout << "请输入年龄:";
        cin.clear(); // 清除cin错误标志
        cin.sync(); // 清除输入缓存区
        cin >> age;
    } while (cin.fail());
    int num = age * 365;
    printf("%d\n", num);
    system("pause");
    return 0;
}

Leave a Reply