C:“”是什么?意思?

时间:2019-04-23 11:13:31

标签: linux c

1:snprintf(       buf, sizeof(buf),
2:                "%s exe=%s hostname=%s addr=%s terminal=%s res=%s",
3:                message, exename,
4:                hostname ? hostname : "?",
5:                addrbuf,
6:                tty ? tty : "?",
7:                success
                );

在上面的第6行代码中,“?”是什么?表示(不是三元运算符)

tty : tty : "?"是什么意思?

2 个答案:

答案 0 :(得分:5)

第6行,

tty ? tty : "?"

第一个?是三元运算符。第二个用引号引起来的是长度为1(一个字符加一个空终止符)的字符串中的问号字符。

因此,该行表示如果tty不为null,则使用tty,否则使用字符串“?”。

答案 1 :(得分:0)

如果ttyNULLsnprintf()输出字符串"?"(一个字符),而不是如果您坚持使用UB tty

char *tty = NULL;
printf("%s", tty); // UB
printf("%s", "?"); // print a 1-character string
printf("%s", tty?tty:"?"); // print tty's value or ?
相关问题