【问题标题】:C : what does "?" mean? [duplicate]C:“?”是什么意思?意思是? [复制]
【发布时间】:2019-09-12 15:00:31
【问题描述】:
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 : <b>"?"</b> 是什么意思?

【问题讨论】:

  • "?" 是由字符 ? 组成的字符串文字。你在理解什么方面有困难?

标签: linux c


【解决方案1】:

在第 6 行,

tty ? tty : "?"

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

所以那行说如果 tty 不为 null,则使用 tty,否则使用字符串“?”。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 2020-10-27
      • 2015-07-15
      • 2018-07-17
      • 2012-08-13
      • 1970-01-01
      • 2019-12-08
      相关资源
      最近更新 更多