c++11新特性-long long整形

本文介绍了C++中long long类型,C++11加强了对其规定,它提供至少64位存储空间,有有符号和无符号之分,加后缀可明确类型、提高可读性。还提到C++11定义的int64_t等精确整数类型,能保证不同平台上的固定宽度,对特定场景有价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

早在c++98 和c++03中long long已经存在,但c++11加强了对long long的规定。

long long也是一种c++整数数据类型,它提供了至少64位,即8字节的存储空间,通常用来储存非常大的整数值。范围:(-2^63 ~ 2^63-1),分为有符号和无符号两种:

//long long - 对应类型的数值可以使用 LL (大写) 或者 ll (小写) 后缀
long long num1 = 123456789LL;
long long num2 = 123456789ll;

//unsigned long long - 对应类型的数值可以使用 ULL (大写) 或者 ull (小写) 
//或者 Ull、uLL (等大小写混合)后缀
unsigned long long num5 = 123456789ULL;
unsigned long long num6 = 123456789ull;
unsigned long long num3 = 123456789uLL;
unsigned long long num4 = 123456789Ull;

LL和ll表示 long long类型,ULL或ull表示unsigned long long类型,后缀可以明确指定证书字面量的类型,避免类型转换或截断。

当然不加后缀也可以,c++编译器可以自动识别类型,比如:

long long myNumber = 1234567890123456; // C++11及以后的标准中,myNumber被自动识别为long long类型

加上后缀会提高代码的可读性,让读者明确知道这是一个long long类型的值。

c++11中还定义了一些数据类型,比如int64_t这是一个精确的整数类型,保证在不同平台有64位(8字节)的宽度,避免了不同平台上证书类型宽度的差异。使用int64_t需要包含头文件<cstdint>.

#include <cstdint>

int64_t myNumber = 1234567890123456;

此外还引入了int8_t int16_t int32_t等有符号整数类型,分别保证了8位、16位、32位的宽度,头文件如上所述。这些整数类型是特别为确保在不同平台上具有固定宽度而定义的。这种确定性对于一些特定的应用场景非常有价值,例如嵌入式系统和网络协议。

### C++ 中 `double`、`long` 和 `float` 类型的区别与用法 #### 数据范围和精度 - **`float`**: 这是一个单精度浮点数类型,通常占用 4 字节内存。其有效位数大约为7位十进制数字,可以表示的数值范围大致是从 \( \pm 1.2 \times 10^{-38} \) 到 \( \pm 3.4 \times 10^{38} \)[^3]。 - **`double`**: 双精度浮点数类型,一般占用了8字节空间,在大多数平台上提供了更高的精度以及更宽泛的有效值域,能表达约15到16位有效的十进制数字,覆盖范围约为\( \pm 2.3 \times 10^{-308} \)至\( \pm 1.7 \times 10^{308}\)。 - **`long`**: 整形数据类型之一,默认情况下长度依赖于编译器环境;对于现代计算机而言通常是4或8个字节大小。它可以存储较大的整数值而不会丢失任何信息。 #### 使用场景示例 当涉及到需要高精度计算的任务时(比如科学仿真),应该优先考虑使用`double`而不是`float`因为前者具有更好的准确性。而对于只需要较低精度的应用程序,则可以选择效率较高的`float`来节省资源消耗。至于`long`, 主要用于处理大整数运算而不必担心溢出问题。 ```cpp #include <iostream> using namespace std; int main(){ // 定义不同类型的变量并初始化它们 float fValue = 123456.789f; double dValue = 123456789.123456789; long lValue = 123456789L; cout << "Float value: " << fValue << endl; // 输出浮点数 cout << "Double value: " << dValue << endl; // 输出双精度浮点数 cout << "Long integer: " << lValue << endl; // 输出长整形 return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值