为什么其O/P是%% ??
int main(void)
{
printf("%%%\n");
return 0;
}
虽然下面的程序o/p是%?
int main(void)
{
printf("%%%");
return 0;
}
可以告诉我实际的区别在哪里?
为什么其O/P是%% ??
int main(void)
{
printf("%%%\n");
return 0;
}
虽然下面的程序o/p是%?
int main(void)
{
printf("%%%");
return 0;
}
可以告诉我实际的区别在哪里?
这是未定义的行为。 C99州的第7.19.6.1/9条规定:
如果转换规范无效,则行为未定义。
并且前面的部分都没有允许空格的转换说明符。它们仅限于来自集合diouxXfFeEgGaAcsPn%
的字符。
空格是转换说明符的有效修饰符,但'%'在说明符中不是有效的下一个字符。 – 2011-04-05 13:42:39
@R:是的,该空格对于有符号转换是一个有效的修饰符,但正如您所说,'%'不是一个有符号转换。我认为标准中的一个段落说'%%'必须是_exactly_这种形式(不允许修饰符)。 – paxdiablo 2011-04-06 00:07:19
当你运行它会发生什么? – David 2011-04-05 12:31:32
你有没有想过自己尝试一下? – Chris 2011-04-05 12:31:57
您是否想过阅读您正在使用的功能的文档? – DevSolar 2011-04-05 12:32:49