Mak*_*nux 6 c c++ variables largenumber compiler-errors
我有这个操作(8*(512*786432)),产品是3221225472
我试图将它用于longlong,unsigned long等变量
但编译器给我一个错误
c4307积分常数溢出
我需要将结果与函数一起使用,我该如何解决?或者哪些变量适用于大数?
问候
Die*_*Epp 20
表达式(8 * (512 * 786432))有类型int,它将在32位系统上溢出.将其分配给类型的变量long不会更改该值已溢出的事实.您可以通过注释数字来解决此问题.
long x = (8L * (512L * 786432L));
Run Code Online (Sandbox Code Playgroud)
你只需要L在其中一个数字上加上,因为它会强制结果也有类型long.
这假设long是64位,这在大多数系统上都是如此,但在Windows上则不然.您需要LL(或i64)在Windows上.