簡體   English   中英

我對輸出感到困惑

[英]I'm confused about the output

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int a , b ,c ;
  printf("Enter values for a and b: ");
  scanf("%d%d",&a,&b);

    a = a + b-- ;

  if (a<b){
    c = -1;
  printf("\n\t%d %d %d\n\n",a,b,c);
          }
  else {
    c = 0;
    printf("\n\t%d %d %d\n\n",a,b,c);
       }
}

讓我們假設 a 和 b 的輸入值為 2(對於它們兩者)。
我研究了上面的程序,但是當涉及到輸出時,它將是 4 1 0, a=4,b=1,c=0。 但是,上面的計算部分說 a=a+b-1 這將是 a 的值是 3,現在 a 的新值是 3。但是對於 b,值仍然是 2,因為我們沒有分配一個新的對它的價值。

我對輸出感到非常困惑。

a+1a++++a之間存在差異。 詳情請看這里 因此,當你說

a = a + b--;

你實際上是在說

a = a + b;
b = b - 1;

如果你說

a = a + --b;

它成為了

b = b - 1;
a = a + b;

如果你說

a = a + (b-1)

它按照您的想法執行: a = a + b - 1 b的值之后不會改變。

一開始,a和b都是2

然后,你執行a = a + b--; .

遞減運算符位於b ,因此其計算結果為:

a=a+b;
b=b-1;

在此之后,a 將為 4,b 將為 1。

a 不小於 b,所以 c 將為 0。

筆記:

如果它是a = a + --b ,它將評估為

b=b-1;
a=a+b;

因為--是在評估開始時執行的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM