Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C for linux如果值为负,则不重试_C_Linux - Fatal编程技术网

C for linux如果值为负,则不重试

C for linux如果值为负,则不重试,c,linux,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时,它不会失败,值不能为0或负值,这对我来说没有意义。我错过什么了吗 如果运行./prog 0,它确实会失败,但如果参数为-,则不会失败

有以下代码示例:

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时,它不会失败,值不能为0或负值,这对我来说没有意义。我错过什么了吗


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

类型大小\u t等于无符号整数int或long。当您强制转换为大小\u t时,编译器应警告您有关不安全强制转换的信息


有关大小\u t的详细信息:

size\u t是无符号类型,因此值不能为负。这里有一些详细信息,请确保您在编译时启用了警告,例如gcc-Wall…,然后您会收到此错误的警告:警告:无符号表达式的比较<0始终为假[-Wtautological compare]size_t是由几个C/C++标准定义的无符号数据类型。此类型用于表示对象的大小。int-C中的大小是多少实际上没有,但我知道了,用了int,它就行了。