为什么编译结果和理论值不一样?

#include
#include
int main()
{

float x1=(3,14+1e10)-1e10;

float x2=3.14+(1e10-1e10);

printf("%f\n%f\n",x1,x2);

system("pause");

return 0;

}
打印的x1和x2的值不应该是0和3.14吗?为什么我编译的结果是14和3.14呢,求解释。

精度问题,因为3.14和1e10差别太大,超过float有效精度表示范围。
并且这个误差,在不同编译器(运算顺序),不同计算机指令集(fpu/isse2/isse3)误差不同,所以没有所谓的理论一说。

因为你打错了符号,x中是逗号。