#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的值。 但我的问题是,当我忘记输入第三行时“void swap(int, int); ",a 和 b 的值交换了!!为什么?
最佳答案
因为你有
using namespace std;
在源代码的开头。
这是一个 a bad programming practice ,您刚刚亲身经历了其后果。你告诉编译器你想调用 std::swap
,但没有任何线索表明你确实这样做了。
这很讽刺,因为你的 swap() 版本不能正常工作,但是 std::swap
可以;因此,您误以为您的代码可以正常工作,而实际上却没有。
永远不要使用“using namespace std;”用你的代码。只需忘记 C++ 语言的这一部分曾经存在过。
关于c++ - 如果不先声明函数,我可以交换变量的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36684040/