无法理解浮动和对象实例化之间比较的原因
Cannot understand reason for comparison between float and object instantiation
我无法理解来自 Tesseract control.cpp 的以下代码:
(stats_.doc_outline_errs / static_cast<float>(page_res->char_count) <=
quality_outline_pc)
stats_.doc_outline_errs
是 short
,page_res->char_count
是 int
但 quality_outline_pc
是:
double_VAR_H(quality_outline_pc, 1.0,
"good_quality_doc lte outline error limit");
和double_VAR_H
是:
#define double_VAR_H(name,val,comment)\
tesseract::DoubleParam name
我们似乎在比较 short
除以 int
转换为 float
与变量声明,即 tesseract::DoubleParam quality_outline_pc
?
它是某些 C++ 特定功能吗?
我正在研究这个的原因是我在这一行从 Valgrind 得到一个错误:
==29454== Conditional jump or move depends on uninitialised value(s)
==29454== at 0x5AB9E76: tesseract::Tesseract::rejection_passes(PAGE_RES*, ETEXT_DESC*, TBOX const*, char const*) (control.cpp:665)
It seems we are comparing a short divided by an int casted to float with a variable declaration, namely tesseract::DoubleParam quality_outline_pc
?
我不知道你所说的 "comparing with a variable declaration" 是什么意思。您正在将计算值与变量值进行比较。 DoubleParam
类型可以使用其转换运算符 operator double()
转换为 double
。除法的结果将从 float
转换为 double
以匹配,并且将比较这两个值。
Is it some C++ specific feature?
我也不知道你的意思。所有这些操作(类型转换、除法和比较)都是 C++ 语言的一部分。
The reason I'm looking into this is that I get an error from Valgrind
这意味着这些变量之一还没有被初始化。
我无法理解来自 Tesseract control.cpp 的以下代码:
(stats_.doc_outline_errs / static_cast<float>(page_res->char_count) <=
quality_outline_pc)
stats_.doc_outline_errs
是 short
,page_res->char_count
是 int
但 quality_outline_pc
是:
double_VAR_H(quality_outline_pc, 1.0,
"good_quality_doc lte outline error limit");
和double_VAR_H
是:
#define double_VAR_H(name,val,comment)\
tesseract::DoubleParam name
我们似乎在比较 short
除以 int
转换为 float
与变量声明,即 tesseract::DoubleParam quality_outline_pc
?
它是某些 C++ 特定功能吗?
我正在研究这个的原因是我在这一行从 Valgrind 得到一个错误:
==29454== Conditional jump or move depends on uninitialised value(s)
==29454== at 0x5AB9E76: tesseract::Tesseract::rejection_passes(PAGE_RES*, ETEXT_DESC*, TBOX const*, char const*) (control.cpp:665)
It seems we are comparing a short divided by an int casted to float with a variable declaration, namely
tesseract::DoubleParam quality_outline_pc
?
我不知道你所说的 "comparing with a variable declaration" 是什么意思。您正在将计算值与变量值进行比较。 DoubleParam
类型可以使用其转换运算符 operator double()
转换为 double
。除法的结果将从 float
转换为 double
以匹配,并且将比较这两个值。
Is it some C++ specific feature?
我也不知道你的意思。所有这些操作(类型转换、除法和比较)都是 C++ 语言的一部分。
The reason I'm looking into this is that I get an error from Valgrind
这意味着这些变量之一还没有被初始化。