简单的C++代码给出了错误的答案

Dia*_*Liu 2 c++

如果我按顺序输入299,399,10,5,计算机应该给我一个答案5.但它给了我-5.为什么不5?这让我很困惑.救命!!

#include "stdafx.h"
#include <iostream>

int add(int x, int y)
{
    int a=x-y;
    return a;
}

int x(int a)
{
    std::cin >> a;
    return a;
}

int y(int a)
{
    std::cin >> a;
    return a;
}

int main()
{
    int a;
    int b;
    std::cin >> a;
    std::cin >> b;
    std::cout << add(x(a), y(b));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*b L 6

编译器可以按照自己喜欢的顺序自由调用x(a)和y(b).如果你这样写:

int c = x(a);
int d = y(b);
std::cout << add(c, d);  
Run Code Online (Sandbox Code Playgroud)

它应该工作.

哦,请不要命名减法函数'add'... :)