C 错误:在';之前应为表达式%';代币

C 错误:在';之前应为表达式%';代币,c,string,printing,compiler-errors,representation,C,String,Printing,Compiler Errors,Representation,我不确定是什么导致这行代码中出现此错误 printf(%d=12 * %d + %d "\n", a, &b, &c); } 错误状态为“应在“%”标记之前使用表达式”,但我不确定哪个字符串表示形式或“%”也引用了它。错放了双引号。没有格式字符串,因为(后面的第一个字符不是“,而是% printf("%d=12 * %d + %d\n", a, b, c); 正如BLUPIXY正确指出的那样,您还应该避免将地址&b,&c打印为带有%d的整数。如果您确实想打印地址,则必须使用带

我不确定是什么导致这行代码中出现此错误

printf(%d=12 * %d + %d "\n", a, &b, &c); }

错误状态为“应在“%”标记之前使用表达式”,但我不确定哪个字符串表示形式或“%”也引用了它。

错放了双引号。没有格式字符串,因为
后面的第一个字符不是
,而是
%

printf("%d=12 * %d + %d\n", a, b, c);
正如BLUPIXY正确指出的那样,您还应该避免将地址
&b
&c
打印为带有
%d
的整数。如果您确实想打印地址,则必须使用带有ptr的
%p
来作废,即:

printf("%d=12 * %p + %p\n", a, (void *)&b, (void *)&c);

查看a、b和c的声明会很有帮助。

放错了双引号。没有格式字符串,因为
之后的第一个字符(
不是
,而是
%

printf("%d=12 * %d + %d\n", a, b, c);
正如BLUPIXY正确指出的那样,您还应该避免将地址
&b
&c
打印为带有
%d
的整数。如果您确实想打印地址,则必须使用带有ptr的
%p
来作废,即:

printf("%d=12 * %p + %p\n", a, (void *)&b, (void *)&c);

查看a、b和c的声明会很有帮助。

也许,删除
&
%d
需要
int
,而不是指针(如果是指针,UB,对吗?)。不管怎样,但我不确定这个问题是否值得回答。这只是一个打字错误。@BLUEPIXY知道了。我的想法是自动将
&
转换为
*
;-)另外,
12*%p+%p
因为12*指针+指针是无效的指针算法。可能,删除
&
%d
需要
int
,而不是指针(如果指针是UB,对吗?).不管怎样,但我不确定这个问题是否值得回答。这只是一个打字错误。@BLUEPIXY明白了。我的想法是自动将
&
转换为
*
;-)也
12*%p+%p
,因为12*指针+指针是无效的指针算法。就在发布SO时,你可以看到代码是错误的:格式字符串是双色的。就在发布时,你可以看到代码是错误的:格式字符串是双色的。