【发布时间】:2016-03-03 10:07:38
【问题描述】:
我遇到了未执行 if 语句的问题。下面的角是固定的,常量。 现在我想要一个静态变量 alphadrone 从一个角落移动到另一个角落。
第一个“如果”有效,第二个无效。
LATLON_TO_CM 是 1.113195f。我试图把 f 放在每个数字后面,使所有浮点数,双精度,语句不被执行。 这不符合逻辑,我将相同的数字放入两个变量(名称不同但数据类型相同)中,但它不起作用。
const int32_t corner_1_X = 47.590000 * 1e3 * LATLON_TO_CM;
const int32_t corner_1_Y = 7.646000 * 1e3 * LATLON_TO_CM; //bigger
const int32_t corner_2_X = 47.590000 * 1e3 * LATLON_TO_CM;
const int32_t corner_2_Y = 7.644000 * 1e3 * LATLON_TO_CM; //smaller
static int32_t alphadroneXposition = corner_1_X;
static int32_t alphadroneYposition = corner_1_Y;
// if (corner_1_Y > corner_2_Y)
// moveAlphadroneYneg(&alphadroneYposition);
if (alphadroneYposition > corner_2_Y)
moveAlphadroneYneg(&alphadroneYposition);
【问题讨论】:
-
请提供一个最小但完整的示例。你提供的信息很少,不可能说什么。我猜整数溢出是造成混乱的原因。
-
定义
LATLON_TO_CM = 1,if 在这里执行得很好。注意溢出或不良转换。 -
代码中
alphadroneYposition值的任何变化都应该共享,否则条件类似 -
您知道
int32_t是一个整数类型,但是您混合了double无法在此处表示的精度并且只是丢失了? -
根据我的经验,您所看到的幽灵是代码和可执行文件不同步的结果。尝试重新构建您的项目(所有构建类型,即调试、发布等)。
标签: c++ if-statement static constants