c ++为什么((1/2)*2)返回0

Dea*_*d_S 1 c++

我第一次发布在这里,但我必须知道这个简单的代码安静有什么问题:

#include <iostream>

using namespace std;

int main()
{
    double test = (1 / 2) * 2;
    cout << test << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行它显示0的代码时,如果我要投射某些东西,它会发生,无论我使用什么编译器,如果'1'被划分为某种形式的小数,它甚至会返回更奇怪的结果.

tro*_*foe 5

因为在整数数学1 / 2 == 00 * 2 == 0.

试着用1.02.0代替.