[英]Arrays and Increment Operators in C?
這是我從某人那里獲得的示例代碼,它可以給出答案
3、2、15
有人可以解釋一下這段代碼的工作方式以及如何將這些代碼輸出到這些輸出嗎?
碼:
int a[5] = { 5, 1, 15, 20, 25 };
int i, j, m;
i = ++a[1];
j = a[1]++;
m = a[i++];
printf("%d, %d, %d", i, j, m);
_getch();
您應該了解前遞增 ( ++var
)和后遞增 ( var++
)。
讓我們逐行分解代碼,對吧?
i = ++a[1];
在這里, a[1]
為1
,(數組a
第二個元素),預先增加為2
並且該值存儲到i
。
j = a[1]++;
同樣,將2
存儲到j
,然后將a[1]
后遞增到值3
。
m = a[i++];
a[2]
,即15
被存儲到m
,而i
后增加到3
。
printf("%d, %d, %d", i, j, m);
-驚喜!!
正是如此:
** Pre- **遞增:遞增變量中的值,然后使用遞增的值。
**后期**遞增:獲取並使用該值。 抓住尚未遞增值之后 ,增加了儲存於該變量的值。 繼續,使用以前的值。
“運算符優先級”規則意味着,例如++a[1]
意味着將首先解析a[1]
的含義,然后將++
運算符應用於該內存位置。 第一個元素(實際上是第二個元素...)的值將增加,並且返回的值將返回以供語句使用。
a[1]
指的是第二個元素1
i=++a[1]
,將a[1]
遞增到2
並分配給i
a[1]
再次增加,而a[1]
的值再次增加到3
m=a[i++]
, i
值從步驟1開始為2
,但這是后增量。因此, m
將保持為m=a[2]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.