float a = 0.5; cout << (1 - 0.5)<<","<<(a == (1 - 0.5)) << endl; cout <<(1 - 1 / 2)<<","<<(a == (1 - 1 / 2)) << endl; //int cout <<typeid(1 - 1 / 2).name() << endl; // double cout << typeid(1 - 0.5).name() << endl; a = 1 - 0.5; cout << typeid(a).name() << endl; 由下图可知,1/2会直接向下取整转为int,结果为0,1-0.5是double类型的0.5,但会发生隐式转换,故与0.5相等