c中的算术运算符,模数(%)给出警告。为什么?

c中的算术运算符,模数(%)给出警告。为什么?,c,operators,C,Operators,模数部分发出警告,格式为未知转换类型字符“b”。发出警告的是printf,用另一个模数替换模数字符: int main(void) { int a=12,b=3; printf("\n a+b = %i\n",a+b); printf("\n a-b = %i\n",a-b); printf("\n a*b = %i\n",a*b); printf("\n a/b = %i\n",a/b); printf("\n a%b = %i\n",a%b);

模数部分发出警告,格式为
未知转换类型字符“b”。

发出警告的是
printf
,用另一个模数替换模数字符:

int main(void)
{
    int a=12,b=3;
    printf("\n a+b = %i\n",a+b);
    printf("\n a-b = %i\n",a-b);
    printf("\n a*b = %i\n",a*b);
    printf("\n a/b = %i\n",a/b);
    printf("\n a%b = %i\n",a%b);//conversion type error 
}

正如您在手册中看到的:没有
b
标志字符,因此当
printf
在字符串中找到您的
%b
时,它不知道该做什么。由于在这种情况下不需要任何格式,只需在字符串中包含
%
字符,您只需将
%
字符替换为另一个
%
字符,如上例所示。

这是
printf
发出警告的原因,将模数字符替换为另一个模数:

int main(void)
{
    int a=12,b=3;
    printf("\n a+b = %i\n",a+b);
    printf("\n a-b = %i\n",a-b);
    printf("\n a*b = %i\n",a*b);
    printf("\n a/b = %i\n",a/b);
    printf("\n a%b = %i\n",a%b);//conversion type error 
}

正如您在手册中看到的:没有
b
标志字符,因此当
printf
在字符串中找到您的
%b
时,它不知道该做什么。由于在这种情况下您不需要任何格式,只需在字符串中包含
%
字符,您只需将
%
字符替换为另一个
%
字符,如上面的示例所示。

是的,它现在可以工作了,但为什么要添加这个额外的%?添加了一个简短的说明和对手册页面的参考。这些是printf:)@Gopal在
%%
中的语义对于
printf(3)
函数,第一个
%%
充当第二个
%%
的转义字符。它告诉
printf
第一个
%
后面的字符不是“转换类型字符”,而是一个实际的百分比符号。是的,它现在起作用了,但为什么这个额外的%?添加了一个简要说明和手册页的参考。这些是printf:)@Gopal在
%%
中的语义对于
printf(3)
函数,第一个
%%
充当第二个
%%
的转义字符。它告诉printf第一个
%
后面的字符不是“转换类型字符”,而是实际的百分比符号。