C++ 数字
在 C++ 中,数字主要涉及 整数(integer) 和 浮点数(floating-point number),它们对应不同的数据类型。下面是关于 C++ 数字的全面解读,包括基础概念、数据类型、操作、进制表示、类型转换、数学函数等内容。
1. C++ 数字的数据类型
C++ 提供了多个用于存储数字的基本数据类型,主要分为 整数类型 和 浮点数类型:
1.1 整数类型(Integer Types)
整数类型用于存储 没有小数部分的数字,常见的整数类型如下:
| 类型 | 大小(位) | 取值范围(带符号) | 取值范围(无符号) |
|---|---|---|---|
short | 通常 16 | -32,768 ~ 32,767 | 0 ~ 65,535 |
int | 通常 32 | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 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,807 | 0 ~ 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 | 通常 32 | 7 位 | 约 3.4E-38 ~ 3.4E+38 |
double | 通常 64 | 15 位 | 约 1.7E-308 ~ 1.7E+308 |
long double | 通常 80/128 | 18+ 位 | 取决于实现(通常比 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. 参考链接
更多详细内容请关注其他相关文章!