[英]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 。 然后將其添加到++b
即21
( PRE-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.