如何在C printf()函数中显示变量?

时间:2014-01-20 01:50:25

标签: c integer printf

我尝试在以下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位)。我误读了吗?这是编译器问题吗?

5 个答案:

答案 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中的额外参数会被忽略,因此您的解决方案中会忽略quorem

答案 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"表示'将下一个参数作为字符串并打印出来';额外的参数(quorem)被忽略了。