簡體   English   中英

解釋以下代碼片段?

[英]Explain the following code snippet?

int main()
{   
    int a, b, c;
    a = 10;
    b = 20;
    c = printf("%d", a) + ++b;
    printf("\n%d", c);
}

上面程序的輸出是23,但我不知道它是如何獲得的。 誰能對此有所了解?

printf有一個返回值,即它打印的字符總數。

語句printf("%d",a)將輸出10 ,這意味着printf的返回值為2

其余的很容易:

c=printf("%d",a)+ ++b;

c的值為2 + 20 + 1 ,即23

對於兩個不同的printf語句,輸出將是兩個不同的整數。 對於第一個printf語句,代碼將打印10 ,然后當此printf語句參與某個賦值語句時 ,它將被視為要打印的字符數,即此處為2 然后將其添加到++b21PRE-INCREMENTED )。 因此輸出為23 (2 + 21)。 整個輸出如下所示:

10
23

printf返回以整數形式打印的字符數。 因此,當您打印10時,它將返回2。所以現在

c = printf(“%d”,a)+ ++ b; 會變成

c = 2 + ++ b;

由於b的值是20預先增加的,因此它將變為

c = 2 + 21因此c = 23

暫無
暫無

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

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