【发布时间】:2025-12-23 14:35:07
【问题描述】:
谁能解释一下在 C 中如何使用以下表达式?
double irate = argc > 1? atof(arg[1]) : 1;
double orate = argc > 2? atof(arg[2]) : 2;
(取自一个 soxr 示例的开头https://sourceforge.net/p/soxr/code/ci/master/tree/examples/1-single-block.c。)
意思是这样的:
"如果参数个数大于一个,则取第一个参数并将其放入irate 变量中,否则将数字 1 放入同一个变量中"?
与第二个可能的参数类似...
atof()只是一个字符串(在 Unix/Linux 中参数始终被视为字符串)到double的 libc 转换,不提供错误(转换时)处理。
我说的对吗?
【问题讨论】:
-
不,它表示第二个和第三个元素(如果给出)。在 C 中,数组从
[0]开始索引。如果这些来自int main(int argc, char *arg[]),则第一个元素是可执行文件的名称,以下元素将是命令行的第一个、第二个参数。 -
但是argv[0]: 是运行的程序的名字,所以不是真正的参数。