uint32_t num = string_to_int(argv[1]);
if (num == -1 ) {
printf("Bad input\n");
}
string_to_int()应只在出现错误时才会输出-1然而
当argv[1] 等于 4294967295(unsigned integer 无符号整数的最大值)时,其在内存中储存的值为0b11111111111111111111111111111111 总共32个1。 而-1 对于unsigned intger 来说是其最小值0 -1 也是0b11111111111111111111111111111111 总共32个1。所以需要改成
uint32_t num = string_to_int(argv[1]);
if (num < 0) {
printf("Bad input\n");
}