C:“”是什么?意思?

fox*_*x18 -1 c linux

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
                );
Run Code Online (Sandbox Code Playgroud)

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

什么意思tty : tty : "?"

L. *_*son 5

在第6行

tty ? tty : "?"
Run Code Online (Sandbox Code Playgroud)

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

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