#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(インクリメント関数によって返された)の値を格納する変数がないか、何か他の理由があるため、これはノーオペレーションのために発生していますか? 。説明してください。
「for(i = 0; i <10; i =インクリメント(i))」と比較し、[Call by Value](http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_value)ファンクションまたはプロシージャがそのパラメータに値を割り当てることができる場合、ローカルコピーのみが割り当てられます。つまり、ファンクションコールに渡されたものは、ファンクションが戻ったときにコール元のスコープ内で変更されません。 –