我尝试在以下printf()函数中打印两个整数值:
printf("%s", "The quotient is %d with remainder %d", quo, rem);
我的书说应该打印
The quotient is 5 with remainder 1
(quo
为11且rem
为1),而是打印
The quotient is %d with remainder %d
我正在使用gcc来编译和运行Ubuntu 12.04 LTS(64位)。我误读了吗?这是编译器问题吗?
答案 0 :(得分:2)
您错误地了解printf
的工作原理。只有第一个参数被解析为格式字符串,因此%s
直接替换为给定的字符串,包括%d
的。
正确的表格是printf("The quotient is %d with remainder %d\n", quo, rem);
答案 1 :(得分:1)
应该是
printf("The quotient is %d with remainder %d", quo, rem);
第一个参数是要打印的模式,因此您正在打印
"The quotient is %d with remainder %d"
为纯字符串(%s
)。
请注意,printf
中的额外参数会被忽略,因此您的解决方案中会忽略quo
和rem
。
答案 2 :(得分:1)
我的朋友,试试这个
printf("The quotient is %d with remainder %d", quo, rem);
第一个参数应该是格式字符串。在你的情况下,如果你希望它是“%s”,其余为%d,则错误地为“%s”
答案 3 :(得分:1)
printf()中的第一个参数是格式字符串。当你这样做时
printf("%s", "The quotient is %d with remainder %d", quo, rem);
格式字符串为“%s”而不是“商数为%d且余数为%d”。
你应该这样做
printf("The quotient is %d with remainder %d", quo, rem);
答案 4 :(得分:0)
你有一个太多的格式字符串。你应该使用:
printf("The quotient is %d with remainder %d\n", quo, rem);
注意最后的换行符。没有它,您可能无法及时看到输出。
如果这本书中有错误,如果它不包含换行符,那么我认为你应该决定放弃这本书并获得更好的一本。
你得到的输出是预期的。 "%s"
表示'将下一个参数作为字符串并打印出来';额外的参数(quo
和rem
)被忽略了。