把變數定義在迴圈體內和迴圈體外的疑惑
阿新 • • 發佈:2018-12-10
#include<iostream> int main() { int n,sum=0; int S2 = 1; scanf("%d",&n); for(int i=1;i<=n;i++) { for(int j = 1;j<=i;j++) { S2=S2*j; } sum+=S2; } printf("%d\n",sum%1000000); return 0; }
#include<iostream> int main() { int n,sum=0;
scanf("%d",&n); for(int i=1;i<=n;i++) { int S2 = 1; for(int j = 1;j<=i;j++) { S2=S2*j; } sum+=S2; } printf("%d\n",sum%1000000); return 0; }
把S2分別定義在迴圈體內外,經過編譯後,如輸入10,定義在外部時,輸出為:231215,錯誤。定義在內部時,輸出為: 37913,正確。
定義在迴圈體外,可能會出現bug?