当我运行此代码时,它输出40,而不是39.任何人都知道为什么?

时间:2015-12-12 13:31:28

标签: c++

在我运行下面的代码中,第四行中的输出为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;
} 

3 个答案:

答案 0 :(得分:3)

仅返回逗号表达式中的最后一个值。那是x/2 == 40j-1evaluated 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