在 C++ 代码中获取虚拟值而不是期望值
getting dummy value in C++ code rather than expected value
我无法理解为什么我的代码会提供一些虚拟值。
谁能帮我看看我错在哪里,原因是什么?
#include <stdio.h>
#include <iostream>
class mypair
{
public:
int a,b;
public:
int print (int first , int second)
{
a = first;
b = second;
std::cout<<a <<" hello "<<b;
}
int getmax();
};
int mypair ::getmax()
{
int res;
res = (a>b)?a:b;
std::cout<<res;
return res;
}
int main ()
{
mypair abc;
std::cout<<abc.print(5,6);
std::cout<<abc.getmax();
}
print()
没有 return 任何值,但它应该是 return 和 int
。这是 UB,你的虚拟值就是由此引起的。
此外,在 print()
和 getmax()
中,您都将输出发送到 cout
。在 getmax()
的情况下,此输出将立即排在 return 值的输出之前,导致相同的数字在没有任何 space 或分隔符的情况下显示两次。
我无法理解为什么我的代码会提供一些虚拟值。
谁能帮我看看我错在哪里,原因是什么?
#include <stdio.h>
#include <iostream>
class mypair
{
public:
int a,b;
public:
int print (int first , int second)
{
a = first;
b = second;
std::cout<<a <<" hello "<<b;
}
int getmax();
};
int mypair ::getmax()
{
int res;
res = (a>b)?a:b;
std::cout<<res;
return res;
}
int main ()
{
mypair abc;
std::cout<<abc.print(5,6);
std::cout<<abc.getmax();
}
print()
没有 return 任何值,但它应该是 return 和 int
。这是 UB,你的虚拟值就是由此引起的。
此外,在 print()
和 getmax()
中,您都将输出发送到 cout
。在 getmax()
的情况下,此输出将立即排在 return 值的输出之前,导致相同的数字在没有任何 space 或分隔符的情况下显示两次。