gpt4 book ai didi

c - 将括号 ("(") 放在 printf 代码中有什么问题

转载 作者:太空狗 更新时间:2023-10-29 15:53:52 27 4
gpt4 key购买 nike

我刚开始使用 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' 格式说明符已禁用",')

最佳答案

这与括号无关,与 % 有关。对于printf()格式字符串,%字符有特殊含义。

来自 C11,章节 §7.21.6.1

[...] The format is composed of zero or more directives: ordinary multibyte characters (not %), which are copied unchanged to the output stream; and conversion specifications, each of which results in fetching zero or more subsequent arguments, converting them, if applicable, according to the corresponding conversion specifier, and then writing the result to the output stream.

Each conversion specification is introduced by the character %. [...]

因此,要打印 % 字符本身,您需要将另一个 % 作为转换说明符。来自转换说明符列表,(同一规范中的第 8 段)

% A % character is written. No argument is converted. The complete conversion specification shall be %%.

关于c - 将括号 ("(") 放在 printf 代码中有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354205/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com