标签: uint64

stdint.h和inttypes.h之间的区别

stdint.h和inttypes.h有什么区别?

如果没有使用它们,则无法识别uint64_t,但使用其中任何一个都是定义的类型.

c uint64 stdint

68
推荐指数
2
解决办法
3万
查看次数

意外的 uint64 行为 0xFFFF'FFFF'FFFF'FFFF - 1 = 0?

考虑以下展示uint64数据类型的简短 numpy 会话

import numpy as np
 
a = np.zeros(1,np.uint64)
 
a
# array([0], dtype=uint64)
 
a[0] -= 1
a
# array([18446744073709551615], dtype=uint64)
# this is 0xffff ffff ffff ffff, as expected

a[0] -= 1
a
# array([0], dtype=uint64)
# what the heck?
Run Code Online (Sandbox Code Playgroud)

我对最后的输出完全感到困惑。

我期望 0xFFFF'FFFF'FFFF'FFFE。

这里究竟发生了什么?

我的设置:

>>> sys.platform
'linux'
>>> sys.version
'3.10.5 (main, Jul 20 2022, 08:58:47) [GCC 7.5.0]'
>>> np.version.version
'1.23.1'
Run Code Online (Sandbox Code Playgroud)

python numpy uint64

45
推荐指数
2
解决办法
5224
查看次数

奇怪的算术错误 - 255x256x256x256 = 18446744073692774400

我在c ++下编程时遇到了一件奇怪的事情.这是一个简单的乘法.

码:

unsigned __int64 a1 = 255*256*256*256;
unsigned __int64 a2= 255 << 24; // same as the above

cerr()<<"a1 is:"<<a1;
cerr()<<"a2 is:"<<a2;
Run Code Online (Sandbox Code Playgroud)

有趣的是结果是:

a1 is: 18446744073692774400 
a2 is: 18446744073692774400 
Run Code Online (Sandbox Code Playgroud)

而它应该是:(使用计算器确认)

4278190080
Run Code Online (Sandbox Code Playgroud)

谁能告诉我怎么可能呢?

c++ multiplication uint64

25
推荐指数
3
解决办法
2751
查看次数

表示uint64_t的最大值的宏

我在寻找代表的最大值宏uint64_tUINT_MAXunsigned int.即我需要这个值保证为(1 << 64)-1.

我尝试使用UINT64_MAX,但用g ++编译结果:

'UINT64_MAX' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

值得一提的是我#define __STDC_LIMIT_MACROS在使用之前在代码中有这一行UINT64_MAX.

我很惊讶没有在网上找到有关它的有用信息.

c++ uint64

23
推荐指数
1
解决办法
3万
查看次数

strconv.Itoa64(1234)在golang中给出了undefined

这是我的代码:

package main
import (
    "strconv"
    "fmt"
)
func main() {
    t := strconv.Itoa64(1234)
    fmt.Println(t)
}
Run Code Online (Sandbox Code Playgroud)

问题:

为什么会导致以下错误消息?

命令行参数.\ test.go:7:undefined:strconv.Itoa64 [以0.2秒结束,退出代码为2]

go int64 uint64

21
推荐指数
1
解决办法
3万
查看次数

sprintf for unsigned _int64

我有以下代码.sprintf中第二个%d的输出始终显示为零.我想我指的是错误的说明符.任何人都可以帮助我获得具有正确值的写字符串.这必须以posix标准实现.感谢您的投入

void main() {
    unsigned _int64 dbFileSize = 99;
    unsigned _int64 fileSize = 100;
    char buf[128];
    memset(buf, 0x00, 128);
    sprintf(buf, "\nOD DB File Size = %d bytes \t XML file size = %d bytes", fileSize, dbFileSize);
    printf("The string is %s ", buf);
    }
Run Code Online (Sandbox Code Playgroud)

输出:

The string is
OD DB File Size = 100 bytes      XML file size = 0 bytes 
Run Code Online (Sandbox Code Playgroud)

c c++ format-specifiers uint64 long-long

19
推荐指数
3
解决办法
4万
查看次数

你如何处理大于UInt64的数字(C#)

在C#中,如何使用显着超过UInt64最大值(18,446,744,073,709,551,615)的数字进行存储和计算?

c# uint64 address-space

16
推荐指数
4
解决办法
2万
查看次数

C++将字符串转换为uint64_t

我试图从字符串转换为uint64_t整数.stoi返回一个32位整数,因此在我的情况下它不起作用.还有其他解决方案吗?

c++ string uint64

14
推荐指数
2
解决办法
2万
查看次数

UInt64和"在检查模式下编译时操作溢出" - CS0220

这感觉就像一个愚蠢的问题,但我似乎无法看到答案.我有一个UInt64,它的最大值应该是

UInt64.MaxValue 18446744073709551615
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试分配一个中等大小的数字时,我得到"溢出错误""在检查模式下编译时操作溢出".如果我将它包装在"未经检查"的块中,那么它将编译,并运行,就像此变量为零一样:

UInt64 value1 = 1073741824 * 8; // Compile error CS0220
UInt64 value2 = 8589934592;     // Actual value - no error
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

c# math logic uint64

13
推荐指数
1
解决办法
6001
查看次数

在x86机器上移位超过32位的uint64_t整数未定义的行为?

学习困难的方法,我试图在x86机器上左移一个long longuint64_t超过32位0.我依稀记得在32位机器上移动操作符只能在前32位上操作,但不能重新收集源.我想知道是否在x86机器上移动超过32位的uint64_t整数是未定义的行为?

c c++ x86 bit-shift uint64

12
推荐指数
2
解决办法
1万
查看次数