如果没有声明函数,我可以交换变量的值吗?

时间:2016-04-18 01:16:31

标签: c++

#include <iostream>

using namespace std;

void swap(int, int);

int main()
{
    int a=10;
    int b=20;

    swap (a, b);

    cout << "a: " << a << endl;
    cout << "b: " << b << endl;

    return 0;
}

void swap(int x, int y)
{
    int t;
    t = x;
    x = y;
    y = t;
}

上面的代码不能交换a和b的值。 但我的问题是,当我忘记键入第三行&#34; void swap(int,int); &#34; ,a和b的价值sw !!为什么呢?

3 个答案:

答案 0 :(得分:7)

这是因为你有

using namespace std;

在源代码的开头。

这是a bad programming practice,你刚才经历过的后果。你告诉编译器你要调用std::swap,而不知道你实际上是这么做的。

这很讽刺,因为你的swap()版本不能正常工作,但是std::swap会这样做;所以你的错误印象是你的代码工作正常,而不是。

永远不要使用“using namespace std;”用你的代码。简单地忘记这部分C ++语言曾经存在过。

答案 1 :(得分:0)

#include <iostream>

using namespace std;


int main()
{
    int a = 10;
    int b = 20;
    cout << "a: " << a << endl;
    cout << "b: " << b << endl;
    system("pause");
    swap(a, b);

    cout << "a: " << a << endl;
    cout << "b: " << b << endl;
    system("pause");
    return 0;
}

无需交换空白

答案 2 :(得分:-1)

如果你把函数定义放在main之上,那么你就不需要原型,否则你确实需要它,如果你没有原型,编译器会给你一个错误