用 ? 解释 C 表达式: 和 >
Explain an C expression with ? : and >
任何人都可以向我解释一下 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()
is just a libc conversion of a string (arguments are always treated as strings in Unix/Linux) to double
, error (while conversion) handling is not provided.
我说得对吗?
double irate = argc > 1? atof(arg[1]) : 1;
可以写成:
if (argc > 1)
irate = atof(arg[1]);
else
irate = 1
或者可以理解为:如果参数个数大于1,则将第二个参数从ascii字符串转换为float并存入变量irate中,否则设置为1的值。
第二行同理
irate
和 orate
应该从命令行提供,分别作为可执行文件名称 (argv [1]
) 之后的第一个参数和第二个参数 (argv [2]
).
表达式
double irate = argc > 1? atof(arg[1]) : 1;
不要初始化适当的变量,但前提是提供了相应的参数。否则,转换将毫无意义,因此分配了 默认值 (1
)。
对于orate
也是如此:如果未提供相应的参数,则分配默认值2
。
任何人都可以向我解释一下 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()
is just a libc conversion of a string (arguments are always treated as strings in Unix/Linux) todouble
, error (while conversion) handling is not provided.
我说得对吗?
double irate = argc > 1? atof(arg[1]) : 1;
可以写成:
if (argc > 1)
irate = atof(arg[1]);
else
irate = 1
或者可以理解为:如果参数个数大于1,则将第二个参数从ascii字符串转换为float并存入变量irate中,否则设置为1的值。
第二行同理
irate
和 orate
应该从命令行提供,分别作为可执行文件名称 (argv [1]
) 之后的第一个参数和第二个参数 (argv [2]
).
表达式
double irate = argc > 1? atof(arg[1]) : 1;
不要初始化适当的变量,但前提是提供了相应的参数。否则,转换将毫无意义,因此分配了 默认值 (1
)。
对于orate
也是如此:如果未提供相应的参数,则分配默认值2
。