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时,你可以看到代码是错误的:格式字符串是双色的。就在发布时,你可以看到代码是错误的:格式字符串是双色的。