簡體   English   中英

這是無人操作還是其他?

[英]is this no-op or something else?

#include<stdio.h>

int i;
int increment(int i)
{
    return ++i;
}

int main()
{
    for(i=0;i<10;increment(i))
    {
        printf("%d",i);
    }
    return 0;
}

這里的輸出為000000。即發生無限倒數。

我想知道這是由於沒有操作而發生的,因為我們沒有變量來存儲++ i的值(由增量函數返回),還是由於其他原因? 。請解釋。

是的,這是沒有操作的。 由於值是通過值傳遞的,因此調用increment不會發生任何變化。

i的局部定義遮蓋了全局定義。 因此,只有本地定義i的使用和全球定義i不會受這是對變量的本地副本所做的增量。

要遞增的變量是傳遞給遞增的參數的本地副本。 您已經命名了兩個i所以我可能不太清楚,但要點是, increment內的i與全局定義的i不相同。

暫無
暫無

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

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