在我运行下面的代码中,第四行中的输出为40
而不是39
,当我们返回39
时,不应该j-1
不是j
?
int secret (int );
int another ();
double x = 10;
int const rate = 999;
int main ()
{
cout << " x first " << x << endl;
x = 70;
cout << "x second " << x << endl;
int x = 80;
cout << "x third " << x << endl;
cout << secret (x) << endl;
return 0;
}
int secret (int x)
{
int i, j;
i = x;
if (i > 10)
j = x / 2;
else
j = x / 3;
return (j-1), x/2;
}
答案 0 :(得分:3)
仅返回逗号表达式中的最后一个值。那是x/2 == 40
。 j-1
为evaluated but discarded。
答案 1 :(得分:0)
当e1,e2
形式有两个表达式时,e1计算后的值被丢弃,所以只有当e1计算以某种方式改变e2的计算结果时才有用。此处return (j-1),x/2
评估(j-1)
(这对评估x/2
没有任何影响),然后评估x/2
并将其返回。
C ++函数可以随时返回一个元素。如果您尝试返回两个值,一种可能的方法是创建包含两个值的struct
,然后返回单个struct
。
答案 2 :(得分:0)
秘密功能与此版本的功能相同
int secret (int x)
{
return x/2;
}
其余的可以忽略。
这导致:80/2 = 40