我不知道我要编译的这个c程序是如何工作的。我在一个MacBook上编译它,所以也许这可以解释不寻常的错误?无论如何,编译后的程序似乎不能正常工作。编译时,我会得到:

ers.c: In function ‘evolve’:
ers.c:205: warning: unknown conversion type character 0xa in format
ers.c: In function ‘print_rule’:
ers.c:304: warning: unknown conversion type character 0xa in format
ers.c: In function ‘test_evaluate’:
ers.c:380: warning: unknown conversion type character 0xa in format

Which refer to these lines of code:

 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类型格式化有关。
有人能看出做错了什么吗?

最佳答案

ascii编码中的0xa是换行符,因此您的错误确实来自\n构造
我假设原始开发人员的意思是“%%”,而不是“\%”(显示“%”字符)。但我不相信这个程序曾经在任何平台上编译过。
BTW:%g是double的可选格式字符(输出与%f或%e相同,具体取决于double值)。

08-06 02:20