C++ 数字
                           
天天向上
发布: 2025-03-29 15:02:42

原创
611 人浏览过

在 C++ 中,数字主要涉及 整数(integer)浮点数(floating-point number),它们对应不同的数据类型。下面是关于 C++ 数字的全面解读,包括基础概念、数据类型、操作、进制表示、类型转换、数学函数等内容。


1. C++ 数字的数据类型

C++ 提供了多个用于存储数字的基本数据类型,主要分为 整数类型浮点数类型

1.1 整数类型(Integer Types)

整数类型用于存储 没有小数部分的数字,常见的整数类型如下:

类型大小(位)取值范围(带符号)取值范围(无符号)
short通常 16-32,768 ~ 32,7670 ~ 65,535
int通常 32-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,295
long通常 32 或 64-2,147,483,648 ~ 2,147,483,647 (32位)0 ~ 4,294,967,295
long long通常 64-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,8070 ~ 18,446,744,073,709,551,615

无符号整数unsigned)不允许负数,它的最大值比带符号整数多一倍。例如,unsigned int 的范围是 0 ~ 4,294,967,295

示例代码:

#include <iostream>
using namespace std;

int main() {
    int a = 10;             // 普通整数
    unsigned int b = 20;    // 无符号整数
    long c = 100000L;       // 长整数
    long long d = 123456789012345LL; // 超长整数

    cout << "a: " << a << endl;
    cout << "b: " << b << endl;
    cout << "c: " << c << endl;
    cout << "d: " << d << endl;

    return 0;
}

1.2 浮点数类型(Floating-point Types)

浮点数用于表示带小数的数字,主要类型如下:

类型大小(位)精度(有效位数)取值范围
float通常 327 位约 3.4E-38 ~ 3.4E+38
double通常 6415 位约 1.7E-308 ~ 1.7E+308
long double通常 80/12818+ 位取决于实现(通常比 double 精确)

示例代码:

#include <iostream>
using namespace std;

int main() {
    float a = 3.14f;       // 单精度浮点数
    double b = 3.1415926;  // 双精度浮点数
    long double c = 2.718281828L; // 长双精度浮点数

    cout << "float a: " << a << endl;
    cout << "double b: " << b << endl;
    cout << "long double c: " << c << endl;

    return 0;
}

2. 进制表示(Binary, Octal, Hexadecimal)

C++ 允许不同进制的数值表示,包括:

  • 十进制(默认)10
  • 二进制0b 前缀)0b1010
  • 八进制0 前缀)012
  • 十六进制0x 前缀)0xA

示例代码:

#include <iostream>
using namespace std;

int main() {
    int dec = 10;     // 十进制
    int bin = 0b1010; // 二进制
    int oct = 012;    // 八进制
    int hex = 0xA;    // 十六进制

    cout << "Decimal: " << dec << endl;
    cout << "Binary: " << bin << endl;
    cout << "Octal: " << oct << endl;
    cout << "Hexadecimal: " << hex << endl;

    return 0;
}

3. 类型转换(Type Conversion)

3.1 隐式转换(自动类型转换)

C++ 会在不同类型间自动转换,例如:

double x = 10; // int 转 double

但需要注意 精度丢失溢出问题

3.2 显式转换(强制类型转换)

使用 C 风格C++ static_cast 进行转换:

int a = 10;
double b = (double)a; // C 风格
double c = static_cast<double>(a); // C++ 风格

4. 数学运算与库函数

C++ 提供了 数学运算符数学库函数(<cmath> 头文件) 进行数值计算。

4.1 常见运算符

运算符描述示例
+a + b
-a - b
*a * b
/a / b
%取模a % b

4.2 常见数学函数

函数描述示例
sqrt(x)开平方sqrt(9) → 3
pow(x, y)幂运算pow(2, 3) → 8
abs(x)绝对值abs(-5) → 5
floor(x)向下取整floor(3.7) → 3
ceil(x)向上取整ceil(3.2) → 4
round(x)四舍五入round(3.5) → 4

示例代码:

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    cout << "sqrt(16): " << sqrt(16) << endl;
    cout << "pow(2, 3): " << pow(2, 3) << endl;
    cout << "abs(-10): " << abs(-10) << endl;
    cout << "floor(3.7): " << floor(3.7) << endl;
    cout << "ceil(3.2): " << ceil(3.2) << endl;
    cout << "round(3.5): " << round(3.5) << endl;

    return 0;
}

5. 参考链接


更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *