如何处理大量精确警告标志?

时间:2011-08-12 19:11:21

标签: objective-c c precision

以下简单代码

int generated;
generated = (random() % 100) + 1;

给出一个精度损失的警告标志,'long'到'int',所以我一直通过重写赋值代码来纠正它

generated = ((int)random() % 100) + 1;

这是纠正问题的有效方法,还是我只是在别处掩盖错误?

2 个答案:

答案 0 :(得分:6)

你也可以使用long来表示常量:

generated = (random() % 100L) + 1L;

请注意,这假设生成的时间很长。

编辑:由于生成的是一个int,您只需在完成后进行转换:

generated = (int)((random() % 100L) + 1L);

答案 1 :(得分:2)

在您的示例中,您将过早地截断random()结果。你需要施放mod操作。

int generated;
generated = (int)(random() % 100) + 1;