如果值为负,则C不支持linux

时间:2016-04-12 08:52:53

标签: c linux

有一小段代码:

size_t value;

value = (size_t) strtol(argv[1], NULL, 10);
if (value <= 0) {
     fprintf(stderr, "Value cant be 0 or a negative value\n");
     return 1;
}

当我运行./prog -1时,Value cant be 0 or a negative value并没有失败,这对我没有意义。我错过了什么吗?

如果我运行./prog 0,它确实会失败,但如果参数是-则不会失败。

1 个答案:

答案 0 :(得分:3)

类型size_t等效于无符号整数(int或long)。当你转换为size_t时,它总是正数(编译器应警告你不安全的转换)。

有关size_t的更多信息:http://en.cppreference.com/w/cpp/types/size_t