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第一个%
后面的字符不是“转换类型字符”,而是实际的百分比符号。