没有加 %s 输出看起来也没有错误,这个 %s 是都可以省略的吗还是说有哪里错了但不影响运行呢?
都没有错。
printf的第一个参数就是一个字符串,会被打印出来,只不过如果这个字符串中有带%号的格式化指示,那么就会把后面的参数按照%的指示打印在相应的位置上,这就是所谓的“格式化输出”。
如果你只是单纯地想要输出一个字符串,可以直接写在第一个参数中(后面的参数就不用写了)。大家入门C语言时的那个hello world不就是直接写在printf中的嘛。
要注意:这样的话,你的这个字符串中不能有%这样的格式化输出指示符。因为如果有的话printf就会去找后面的参数试图打印它们,显然就错了。
所以,把printf的第一个参数写成%s、把想要输出的内容写在第二个参数上是种很"安全"的做法,可以避免上面的问题。 不过在实践中如果你要输出的内容很简单,当然是可以直接写出来的。