我一直盯着这个约一个小时,老实说我不知道我错过了什么.
#include <iostream>
using namespace std;
void callChain();
double chain(int, int &, int &);
int main()
{
callChain();
}
void callChain() {
int totalInches = 53;
int feet;
int inches;
cout << "\nTesting chain for 53 inches: \nExpected result: 15.46 feet: 4 inches: 5" << endl;
cout << "Actual result: " << chain(totalInches, feet, inches) << " feet: " << feet << " inches: " << inches << endl;
}
double chain(int totalInches, int &feet, int &inches) {
feet = totalInches / 12;
inches = totalInches % 12;
return (feet) * 3.49 + (inches) * .30;
}
Run Code Online (Sandbox Code Playgroud)
返回是正确的,所以很明显功能正常,但对于我的生活,我无法弄清楚为什么脚和英寸不会改变.一切都拼写正确,我有我的所有&符号,但由于某种原因,显示器显示英尺为8英寸为7.我不知道这些数字甚至来自哪里.
请记住,这<<是函数调用的合成糖,这些函数的评估顺序不一定按照您认为的顺序.事实上,C++实际上并没有指定顺序.所以你最后部分第二cout打印出的初始值feet和inches.
chain(totalInches, feet, inches)在第二个之前调用中间步骤cout,甚至可能以这种方式调用(Acknowledge @DavidSchwartz):
cout << "Actual result: " << chain(totalInches, feet, inches);
cout << " feet: " << feet << " inches: " << inches << endl;
Run Code Online (Sandbox Code Playgroud)