簡體   English   中英

C中的數組和增量運算符?

[英]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++ )。

讓我們逐行分解代碼,對吧?

  1. i = ++a[1]; 在這里, a[1]1 ,(數組a第二個元素),預先增加為2並且該值存儲到i

  2. j = a[1]++; 同樣,將2存儲到j ,然后將a[1]后遞增到值3

  3. m = a[i++]; a[2] ,即15被存儲到m ,而i后增加到3

  4. printf("%d, %d, %d", i, j, m); -驚喜!!

正是如此:

  • ** Pre- **遞增:遞增變量中的值,然后使用遞增的值。

  • **后期**遞增:獲取並使用該值。 抓住尚未遞增值之后 ,增加了儲存於該變量的值。 繼續,使用以前的值。

“運算符優先級”規則意味着,例如++a[1]意味着將首先解析a[1]的含義,然后將++運算符應用於內存位置。 第一個元素(實際上是第二個元素...)的值將增加,並且返回的值將返回以供語句使用。

  1. a[1]指的是第二個元素1
  2. 在步驟i=++a[1] ,將a[1]遞增到2並分配給i
  3. 在下一步中, a[1]再次增加,而a[1]的值再次增加到3
  4. 在第三步中, m=a[i++]i值從步驟1開始為2 ,但這是后增量。因此, m將保持為m=a[2]

暫無
暫無

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

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