【发布时间】:2013-11-30 18:40:24
【问题描述】:
我有一个函数,它接受一个字符串作为输入,然后将加权值的乘积分配给一个变量,方式如下:字母表中的每个字母对应一个 2 到 101 之间的质数,而值为输入字符串中的每个字符都相乘并存储在一个 int 变量中,如下所示:
int result=1;
/* some other code */
result*=letterweight[index];
有足够长的字符串会导致溢出。那么,我的问题如下:
在给定结果的情况下,我如何确定可能正确的值?
例如:如果result == 1066849907,忽略C中int的取值范围,还有什么其他的值?
我无法控制原始代码,也无法确定是否发生了溢出。我只对找出一系列可能的结果感兴趣,不管数字有多大。
【问题讨论】:
-
有符号整数溢出是未定义的行为,你不能依赖任何东西。