我想获得输出2^64,而C 中没有任何扩展
I want to get output 2^64 without any extension in C++
感谢您检查此问题。因此,如果我输入为2^64,我想知道如何获得2^64。在未签名的长int中,它仅达到2^64-1 == 18444444444073709551615重点是,当输入号== 184446744073709551616输出将为" 2^64"但是我拥有的代码是:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
unsigned long long int a;
cin >> a;
if (a == pow(2,64))
{
cout << "2^64";
}
}
所以问题是,如果我输入:184467444073709551616它不会输出。如何使输出" 2^64"?
unsigned long long
是64位或更大。这意味着在某些机器中,它将仅是64-bits
。在这种情况下,您将在代码中存在溢出问题。
检查ULLONG_MAX
(#include <climits>
)
类型无符号的对象的最大值长长int 184444444073709551615(2^64-1)或更大* 实际值取决于特定的系统和库实现,但应反映目标平台中这些类型的限制。
(来自http://www.cplusplus.com/reference/climits/)。
这意味着您的目标平台支持64位未签名的长长值。因此,您的极限为2^64-1。
您可以尝试使用大整数库,例如以这种限制来工作。
C 中最大的数据类型与编译器到编译器的不同之处...但是通常无符号的长长INT当然被认为是大的!因此,要解决您的问题..,最好将IF条件更改为POW(2,64)-1 ...
除此之外,如果您真的想在项目中实现该条件,请添加一个"您的意思是条件。/div>
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 是否可以通过C++扩展强制多个python进程共享同一内存
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何在不产生任何垃圾的情况下获得C中的像素
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 扩展光电二极管探测器以支持多个传感器
- C++映射有2个键,这样任何1个键都可以用来获取值
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- RtlCaptureStackBackTrace未捕获任何帧
- C++中的VLA,扩展名为std=C++11
- 链表c++插入,所有情况都已检查,但没有任何工作
- 复制C DLL以构建任何C#项目的输出,以扩展为参考
- 如何打开并显示C 中任何文件扩展名的文件
- 将RCPP函数扩展到任何类型的输入向量
- 我想获得输出2^64,而C 中没有任何扩展
- 在c++中,当我们创建一个类而不扩展到任何类时
- visual studio是否有任何扩展来优化C++代码单元测试
- 为什么用于零拷贝的OpenOnload扩展API没有任何UDP发送或TCP接收的内容?