【问题标题】:Can we have '+' operator inside printf()?我们可以在 printf() 中使用“+”运算符吗?
【发布时间】:2023-03-15 23:04:01
【问题描述】:
void main(){
    char str1[10] = "Hello", str2[10] = "World";
    printf(5 + "Good Morning\n");
}

它的输出是“早上”,我不明白为什么,提前谢谢。

【问题讨论】:

  • 你期待什么输出?您发布的是有效代码。 (虽然...推荐使用“%s”。)
  • 你期望什么输出?
  • 你真的需要学习一些关于 C 的基本知识,因为它根本不像你期望的那样工作。通过反复试验学习将非常痛苦,非常非常困难。我建议买一本好书。

标签: c string pointers


【解决方案1】:

数组"Good Morning\n"(类型char[14]),在与整数相加的上下文中,被转换为指向其第一个元素('G')的指针。

该指针递增 5,因此指向 'M'。

G o o d _ M o r n i n g \n 0 1 2 3 4 5 6 ...

printf() 接收字符串"Morning\n" 作为格式字符串。因为没有%所以直接打印就好了。

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 2020-05-09
    • 2015-04-08
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    相关资源
    最近更新 更多