【发布时间】:2015-01-31 08:12:38
【问题描述】:
我正在执行两个涉及 atoi 的操作,我想知道如何使用无符号整数执行此操作,因为 atoi 似乎将这些转换为有符号整数,从而导致环绕整数溢出。我想使用 32 位无符号整数,但 atoi 将我有效地限制为 31 位无符号整数。
if (multiplication_is_safe(atoi(argv[1]),atoi(argv[3])))
{
printf("%s * %s = %u \n", argv[1], argv[3], atoi(argv[1]) * atoi(argv[3]));
return 0;
} else
【问题讨论】:
-
atoll?我不确定它是否是标准的 C 函数。 -
如果代码需要至少 16 位无符号,请使用
unsigned。如果代码至少需要 32 位无符号,请使用unsigned long。如果代码需要正好 32 位无符号,请使用uint32_t。
标签: c integer-overflow atoi