有一小段代码:
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
,它确实会失败,但如果参数是-
则不会失败。
答案 0 :(得分:3)
类型size_t等效于无符号整数(int或long)。当你转换为size_t时,它总是正数(编译器应警告你不安全的转换)。
有关size_t的更多信息:http://en.cppreference.com/w/cpp/types/size_t