如何在c程序或c++中存储等于10^18的整数值
How to store a integer value equal to 10^18 in c programs or c++?
如何在C变量中存储大整数值?如果我用int a;
声明a,它将不起作用。我用这个与long long int
。它不工作。
if( a>=0 && a <= (1000000000000000000))
如何声明变量a以使其不会产生任何错误。应该是整数
Compiler error
integer constant is too large for long type.
试试unsigned long long
,假设值为正,它最多可以容纳
18,446,744,073,709,551,615
(VS 13)但是,必须使用ULL
语法。
让我们看看你写的if
语句:
if( a>=0 && a <= (1000000000000000000))
1000000000000000000
对于整型文字来说太大了,所以你需要一个更大的文字类型。您应该将a
声明为int64_t
,并像这样进行比较:
if( a>=INT64_C(0) && a <= INT64_C(1000000000000000000))
请注意,这只会在C99
或C++11
编译器中工作,当您使用#include <cstdint>
或#include <stdint.h>
编辑:在当前的标准草案中,你可以找到这句话(2.14.2/2):
整数字面值的类型是对应列表的第一个类型
这意味着编译器应该自动使用所需的文字类型来匹配你的文字。顺便说一句,我没见过那种编译器
您可以使用long long
来存储该整数。long long
保证至少保存64位。
这个代码的问题:if( a>=0 && a <= (1000000000000000000))
是,如果您希望它的类型为long long
或ULL
的unsigned long long
,您需要给字面值(1000000000000000000
)后缀LL
。
相关文章:
- 添加存储在向量中的大整数的函数出现问题
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- 整数数据如何以位为单位存储在内存中?不是右对齐吗?
- 当我尝试将范围值存储为 8 位的固定宽度整数时,它向我显示一些其他值 [ASCII]
- 将大数字(10-12 位数字)存储在无序映射中<字符串,整数>
- GMP-将64位整数存储在mpz_t/mpz_class中,并返回64位整数
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- 从文件中读取后,将分号分隔的整数存储到数组中
- 将25个甚至整数存储到一个名为intlist的整数阵列中,然后在屏幕上显示数组,并在屏幕上显示名为fivintegers
- 如何将整数存储在字符阵列中
- 将 10 个整数存储到数组C++中时出现问题
- 将多个整数存储在字符串中
- 将多个整数存储到数组中并打印出来
- 如何将用户输入的 5 个整数存储在数组中并打印出整个数组
- 在 c++ 中将随机生成的整数存储为变量
- 如何将整数存储在字符数组的单个索引中
- C++ 读取文件并将整数存储在向量中.最终占用的驻留内存大约是实际文件大小的 5 倍
- 如何将.txt文件中的特定整数存储在结构数组中
- 将文件中的64*64整数存储到2D数组中
- C++将多个整数存储在一个int变量中