C 中变量后的新行

问题描述 投票:0回答:3

在 C 中,我尝试做 在变量之后。

这是我的源代码:

int main() {
    int xD = 21;
    printf(xD\n);
}

我在编译时收到这个:

new 1.c: In function ‘main’:
new 1.c:5:11: error: stray ‘\’ in program
printf(xd\n);
       ^
new 1.c:5:12: error: expected ‘)’ before ‘n’
printf(xd\n);
        ^
new 1.c:5:9: warning: format not a string literal and no format
arguments [-Wformat-security]
printf(xd\n);
       ^~

我该如何解决?

c variables printf newline
3个回答
5
投票

这里有两个问题: 1.

printf()
期望第一个参数是指定格式的
const char*
字符串。 2. 编译器不知道如何解释字符串(引号)外的
\n
。这就是阻止它编译的原因。

即使您删除了

\n
,尝试
printf(xd)
也会要求
printf()
将 xd(整数)视为格式字符串——这对您不起作用。事实上,C 可能会尝试将
xd
隐式转换为
const char*
。您要求
printf()
将“位于地址 21 的字符数组”解释为格式字符串(并且几乎可以肯定那里没有格式字符串)。

你真正想说的是:

printf("%d\n", xd);

2
投票

printf函数需要一个格式参数来标识变量xD的类型。由于 xD 是一个整数,因此需要“%d”作为格式参数。

printf("%d\n", xD);

1
投票

您错过了要格式化的字符串:

printf("%d\n",xD);
© www.soinside.com 2019 - 2024. All rights reserved.