5

我不知道我打算编译的这个 C 程序是如何工作的。我在 MacBook 上编译它,所以也许这解释了不寻常的错误?无论如何,编译后的程序似乎无法正常工作。编译后,我得到这些:

ers.c:在函数“进化”中:
ers.c:205:警告:未知转换类型字符 0xa 格式
ers.c:在函数“print_rule”中:
ers.c:304:警告:未知转换类型字符 0xa 格式
ers.c:在函数“test_evaluate”中:
ers.c:380:警告:未知转换类型字符 0xa 格式

其中指的是这些代码行:

 if(i%100==0)printf("best on training set at iteration %d:  %g\%\n", i,100.0* population[bestinpop].acc);

printf("ACCURACY on training set %g\%\n\n", 100.0* r->acc);

printf("TEST ACCURACY %g\%\n", 100.0* r->acc);

我怀疑这与 %g 类型格式有关。

谁能看到做错了什么?

4

2 回答 2

9

0xain ASCII 编码是换行符,所以你的\n错误确实来自"%\n"结构

我假设原始开发人员的意思是“%%”而不是“\%”(显示“%”字符)。但我不相信这个程序曾经在任何平台上编译过。

顺便说一句:%g 是双精度的替代格式字符(输出与 %f 或 %e 相同,取决​​于双精度值)。

于 2012-11-19T14:02:02.467 回答
6

"%\n"不是有效的格式说明符。如果您需要%字符成为输出的一部分,您需要使用"%%".

于 2012-11-19T13:43:52.843 回答