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

When I run this code it output 40, not 39. Anyone know why?

本文关键字:任何人 为什么 运行 代码 输出      更新时间:2023-10-16

在下面的代码中,当我运行它时,输出40没有39在第四行,当我们返回j-1而不是j时不应该39吗?

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;
} 

仅返回逗号表达式中的最后一个值。那是x/2 == 40. j-1被评估但被丢弃。

当有两个

表达式的形式e1,e2 e1 计算后的值被丢弃时,因此仅当 e1 计算以某种方式改变 e2 的计算结果时才有用。在这里return (j-1),x/2评估(j-1)(这对x/2的评估没有任何影响(,然后评估x/2并返回它。

C++函数在任何时候只能返回一个元素。如果尝试返回两个值,一种可能的方法是创建一个包含这两个值的struct,然后改为返回单个struct

secret 函数与此版本相同

int secret (int x)  
{
   return x/2;
}

其余的可以忽略。

这导致:80/2 = 40