我刚刚开始C编程,并对以下代码有疑问。
#include <stdio.h>
int main(void)
{
int num1, num2, num3;
int result;
printf("(num1 - num2) x (num2 + num3) x (num3 % num1) \n");
printf("Insert 3 numbers: ");
scanf("%d %d %d", &num1, &num2, &num3);
result = (num1 - num2) * (num2 + num3) * (num3 % num1);
printf("Answer: %d ", result);
return 0;
}
每当我放置以下单行代码时,就会发生错误:
printf("(num1 - num2) x (num2 + num3) x (num3 % num1) \n");
我放入这个的原因是因为我想打印该方程式,但是每当我放入这个方程式时都会发生错误。错误消息似乎表明括号的使用存在问题,但是我没有弄清楚为什么把括号变成问题。
我希望输出是
(num1 - num2) x (num2 + num3) x (num3 % num1)
Insert 3 numbers:
但是发生以下错误:
“调试断言失败”
...
表达式:“(”“'n'格式说明符已禁用”,')
答案 0 :(得分:9)
这与括号无关,与%
有关。对于printf()
格式的字符串,%
字符具有特殊含义。
摘自C11
,第7.21.6.1章
[...]格式由零个或多个指令组成:普通多字节 字符(不是%),这些字符将原样复制到输出流中; 和转化 规范,每个规范都会导致获取零个或多个后续参数, 如果适用,则根据相应的转换说明符将其转换,以及 然后将结果写入输出流。
和
每个转换规范都由字符
%
引入。 [...]
因此,要打印一个%
字符本身,您需要放置另一个%
作为转换说明符。从转化说明符列表中,(相同规范中的第8段)
%
写入一个%
字符。没有参数被转换。完整的 转换规范应为%%
。