当我在支持软件浮点仿真(禁用了硬件浮点)的32位powerpc内核中运行以下C++程序时,我得到了错误的条件评估。有人可以告诉我这里的潜在问题是什么?

#include <stdio.h>

int main() {
   int newmax = 1;
   if ((newmax + 0.0) > 256) {
       printf("\nShouldn't be here\n");
   } else {
       printf("\nShould be here\n");
   }
}

编译:

powerpc-linux-g++ -msoft-float -c floating.cxx
powerpc-linux-g++  -o floating floating.o

目标系统中的输出:

[linux:/]$ ./floating
Shouldn't be here

最佳答案

链接时也应指定-msoft-float
使用-S标志给我们反汇编:powerpc-linux-g++ -msoft-float -c float.cxx -S -o float.s

关于c++ - 错误的浮点行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15045351/

10-10 09:23