我要编译的程序中的未知转换类型

问题描述 投票:0回答:2

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

ers.c:在函数“evolve”中:
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 类型格式有关。

任何人都可以看到做错了什么吗?

c types compilation
2个回答
9
投票

ASCII 编码中的

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

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

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


5
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.