Questions tagged «integer-overflow»

当运算结果大于基础整数类型可以表示的最大值时,就会发生整数溢出。


4
argc会溢出吗?
我当时正徘徊在SO中,看到了这个问题。然后我开始怀疑我是否可以溢出argc。 标准说argv[argc]必须是一个空指针,但是如果argc溢出,它将为假。 (我写了一个小的C程序和一个python脚本对其进行测试,但得到了一个MemoryError。) 谢谢! 国际标准的理由-编程语言-C§5.1.2.2.1程序启动 的规范argc和argv作为main广泛认可的先验实践的论据。argv[argc]也是根据惯例,必须为空指针,以提供对列表末尾的冗余检查。

6
当整数列上的auto_increment达到数据库中的max_value时会发生什么?
我正在实现一个数据库应用程序,我将同时使用JavaDB和MySQL作为数据库。我的表中有一个ID列,其类型为整数,并且使用数据库auto_increment-function作为值。 但是,当我获得超过2(或4)十亿个帖子并且整数不够时,会发生什么?整数溢出并继续还是抛出了我可以处理的异常? 是的,我可以更改为数据类型,但是如何检查何时需要?而且我认为,如果我将long用作ID列的数据类型,则获取last_inserted_id()函数会出现问题。

5
这是JVM错误还是“预期行为”?
我注意到了一些意外的行为(相对于我的个人期望而言是意外的),我想知道是否是JVM中存在错误,或者这可能是一种边缘情况,在这种情况下我不了解某些确切的细节应该发生。假设我们自己在main方法中具有以下代码: int i; int count = 0; for(i=0; i < Integer.MAX_VALUE; i+=2){ count++; } System.out.println(i++); 天真的期望是这样会印刷Integer.MAX_VALUE-1,最大的甚至可以代表int。但是,我认为整数算术应该在Java中“翻转”,因此将1加到会Integer.MAX_VALUE导致Integer.MIN_VALUE。由于Integer.MIN_VALUE仍然小于Integer.MAX_VALUE,因此循环将循环遍历负数甚至整数。最终它将回到0,并且此过程应作为无限循环重复进行。 当我实际运行此代码时,会得到不确定的结果。打印的结果往往大约为一百万,但是确切的值却有所不同。因此,当我认为循环应该是无限循环时,循环不仅终止了,而且似乎随机终止了。这是怎么回事? 我的猜测是,这要么是JVM中的错误,要么是正在进行许多时髦的优化,从而产生了预期的行为。哪有

7
为什么使用整数而不是Long?
我经常看到与Overflow错误有关的问题vba。 我的问题是为什么使用integer变量声明而不是仅将所有数字变量(不包括double等)定义为long? 除非您要执行for循环之类的操作,否则您可以保证该值不会超过32,767的限制,那么这是否会对性能产生影响或导致其他原因导致不使用long?

4
是否有一个C代码片段,可以在不使用编译器内置函数的情况下有效地计算溢出安全加法?
这是一个C函数,将C添加int到另一个函数,如果发生溢出将失败: int safe_add(int *value, int delta) { if (*value >= 0) { if (delta > INT_MAX - *value) { return -1; } } else { if (delta < INT_MIN - *value) { return -1; } } *value += delta; return 0; } 不幸的是,GCC或Clang 无法对其进行优化: safe_add(int*, int): movl (%rdi), %eax testl …

1
是否将设置为CHAR_MAX的char值保证可以绕回CHAR_MIN?
我的代码: #include <stdio.h> #include <limits.h> int main() { char c = CHAR_MAX; c += 1; printf("CHAR_MIN=%d CHAR_MAX=%d c=%d (%c)\n", CHAR_MIN, CHAR_MAX, c, c); } 输出: CHAR_MIN=-128 CHAR_MAX=127 c=-128 () 我们看到,当我们将char变量设置为递增时CHAR_MAX,它会绕到CHAR_MIN。这种行为得到保证吗?还是将是未定义的行为或实现特定的行为?C99标准对此有何说法? [注意:当给char或C 大于CHAR_MAX(127)的值时会发生什么?为什么char c = 129会转换为-127?之所以没有解决这个问题,是因为他们谈论分配超出范围的值,而不是将值递增到超出范围的值。]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.