c - 整数溢出

标签 c overflow

我有一个 unsigned long long 用于跟踪交易量。卷增加另一个 unsigned long long。每 5 秒我打印出这个值,当该值达到 32 位无符号最大值时,printf 给出一个负值。代码片段如下:

unsigned long long vol, vold;
char               voltemp[10];

vold = 0;

稍后...

while (TRUE) {
    vol = atoi(voltemp);
    vold += vol;    
    fprintf(fd2, "volume = %llu);
}

我做错了什么?它在 RedHat 4 2.6.9-78.0.5.ELsmp gcc 版本 3.4.5 下运行

最佳答案

既然你说它打印了一个负值,那么除了你使用 atoi 而不是 strtoull 之外,肯定还有其他问题。 %llu 格式说明符只是不打印负值。

看起来问题很明显出在 fprintf 调用上。检查您是否包含了 stdio.h 并且参数列表确实是源代码中的内容。

关于c - 整数溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/837215/

相关文章:

c++ - 如何判断整数表达式的结果是否为整数

javascript - 确定 flexbox 的所需宽度

jquery - 如何使用 jQuery 或 vanilla JS 检测链接是否隐藏在折叠的 Twitter Bootstrap 导航栏中

为 windows mobile 6 编译 zlib

c - AVR:C 微 Controller 中的设置位

objective-c - 从 .mm 文件中的函数内部调用 C 函数

c - 自定义字符设备的读取系统调用的回调函数(scull read)在使用 $cat 读取时被无限次调用

javascript - 试图获得预期效果的问题

css - 尽管有足够的垂直空间,为什么我的 div 显示垂直滚动条

html - 嵌套在表格单元格中时出现 div 溢出问题 (firefox)