k从入门到入坟 2020-12-18 19:53 采纳率: 33.3%
浏览 12
已采纳

C++,在谭浩强的书上我copy了一个代码,但是改了函数名,真的觉得没影响啊。但是居然输出不了结果

#include <iostream>
using namespace std;
int main()
{
void sort(int &i,int &j,int &k);
int a,b,c;
cout<<"请输入3个整数:";
cin>>a>>b>>c;
sort(a,b,c);
cout<<a<<"  "<<b<<"  "<<c<<"  ";
cout<<endl;
return 0;
}
void sort(int &i,int &j,int &k)
{
void swap(int &x,int &y);
if(i>j) swap(i,j);
if(i>k) swap(i,k);
if(j>k) swap(j,k);
}
void swap(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}

这第一个是有问题的代码,也就是我改了函数名的代码。

#include <iostream>
using namespace std;
void sort(int &i,int &j,int &k);
void swap(int &x,int &y);
int main()
{
int a,b,c;
cout<<"请输入3个整数:";
cin>>a>>b>>c;
sort(a,b,c);
cout<<a<<"  "<<b<<"  "<<c<<"  ";
cout<<endl;
return 0;
}
void sort(int &i,int &j,int &k)
{
if(i>j) swap(i,j);
if(i>k) swap(i,k);
if(j>k) swap(j,k);
}
void swap(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}

第二个是书上的代码,没有问题。

其实我为什么会想要输入这个代码,是因为书上说不能建立引用的引用,但是我觉得这个例子不就是建立了引用的引用吗,那会不会就是这里出来问题。

#include <iostream>
using namespace std;
int main()
{
	void sort(int &i,int &j,int &k);
	int a,b,c;
	cout<<"请输入3个整数:";
	cin>>a>>b>>c;
	sort(a,b,c);
	cout<<a<<"  "<<b<<"  "<<c<<"  ";
	cout<<endl;
	return 0;
}
void sort(int &i,int &j,int &k)
{
	void swap(int &x,int &y);
	if(i>j) swap(i,j);
	if(i>k) swap(i,k);
	if(j>k) swap(j,k);
}
void swap(int &x,int &y)
{
	int temp;
	temp=x;
	x=y;
	y=temp;
}
//这个是有问题的代码


#include <iostream>
using namespace std;
void sort(int &i,int &j,int &k);
void swap(int &x,int &y);
int main()
{
	int a,b,c;
	cout<<"请输入3个整数:";
	cin>>a>>b>>c;
	sort(a,b,c);
	cout<<a<<"  "<<b<<"  "<<c<<"  ";
	cout<<endl;
	return 0;
}
void sort(int &i,int &j,int &k)
{
	if(i>j) swap(i,j);
	if(i>k) swap(i,k);
	if(j>k) swap(j,k);
}
void swap(int &x,int &y)
{
	int temp;
	temp=x;
	x=y;
	y=temp;
}
//这个是书上的例子(没有问题)

(这个问题真的很离谱啊,希望有人能给我一个答案)

  • 写回答

7条回答 默认 最新

  • bosaidongmomo 2020-12-19 10:17
    关注

    https://www.cnblogs.com/mlgjb/p/8821340.html

    c++的问题问博客里的赵四老师

    https://blog.csdn.net/zhao4zhong1

    应该是编译器问题。(这种函数头部写在函数里的我也是第一次见,应该是匿名函数的一种

    int main() { auto Add = [](int a, int b)->int { return a + b; }; std::cout << Add(1, 2) << std::endl; return 0; }

    不同编译器可能出不同结果,这是c++本身编译环境导致的 (不过下面的链接和这题目好像没什么关系,我也放进来了

    https://docs.microsoft.com/zh-cn/cpp/porting/binary-compat-2015-2017?view=msvc-160&viewFallbackFrom=vs-2017

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作