[英]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.