此代码编译没有任何错误,但为什么它不会在5?
之后打印“Hello”#include<stdio.h>
#include<conio.h>
int main()
{
int number = 5;
printf("%d",number,"Hello");
getch();
}
答案 0 :(得分:2)
除%s
占位符外,您还需要%d
占位符。见下文:
printf( "%d %s", number, "Hello" );
...请注意"Hello"
是一个字符串文字(因此是一个NULL
终止的字符串),这意味着如果您希望传递%s
,则需要"Hello"
占位符作为一个论点。由于您使用的是字符串文字,我建议您按照以下步骤操作:
printf( "%d Hello", number );
<强>注:强>
%d
占位符是一个整数。%s
占位符用于字符串(NULL
已终止的字符数组)。答案 1 :(得分:1)
printf
只打印第一个参数(即格式)包含的内容。
printf("%d %s", number, "Hello");
%s
格式适用于字符串("Hello"
是字符串litteral )。
答案 2 :(得分:1)
您没有为格式字符串指定打印第二个参数的标记。
建立这一行:
printf("%d",number,"Hello");
此:
printf("%d%s",number,"Hello");
答案 3 :(得分:1)
答案 4 :(得分:1)
printf()
将仅打印格式字符串中指定的内容。您的格式字符串提供了一个转换说明符"%d"
和与之对应的参数number
。没有与参数"Hello"
对应的转换说明符,因此该参数将被丢弃。要打印那个,你需要另一个转换说明符:
printf ("%d %s", number, "Hello");
或更好,因为它仍然是一个字符串文字:
printf ("%d Hello", number);
答案 5 :(得分:1)
要么
printf("%d %s", number, "Hello")
或
printf("%d Hello", number)
会奏效。
答案 6 :(得分:0)
您的格式字符串中只有一个占位符。尝试:
printf("%d %s", number, "Hello");
这应该打印: 5你好
答案 7 :(得分:0)
printf("%d %s",number,"Hello");
^
Here it is.
答案 8 :(得分:0)
printf函数接受各种参数(...)并打印第一个N参数(N是占位符数)。 printf函数不知道参数的数量。
答案 9 :(得分:0)
其他答案显然提到您应该在%s
和printf()
中使用%d
,以便知道它为什么不显示任何错误但仍然无法打印“你好“你应该考虑以下几点:
printf()
是一个可变函数,即它需要可变数量的参数。在这里,您提供3个参数:“%d”,数字和“hello”。printf()
可以有一个,两个,
三个或更多参数,这使编译器不会使用其常用的错误方法
检查。%d
)与值的数量相匹配;
编译器不会捕获那种错误。由于“hello”没有匹配的格式说明符,因此不会打印它。 AS为什么,正如我所说,它不是语法错误,它不违反C规则,因此,编译器不会检测它们。 注意 - printf()
和scanf()
功能
使用第一个参数来表示将要有多少其他参数。诀窍在于
初始字符串中的每个格式规范都表示另一个参数。
此外,摆脱conio.h
和getch()
两者都是非标准的,如果您使用的是TURBO C,请离开它并搜索其他一些编译器。