【例3.5】下面是計算1+2+3+…+9+10的程序,編譯正確但運行結果錯誤,錯在哪裡呢?
#include<stdio.h> void main ( ) { int sum ,i ; for (i=1 ;i<11 ;i++ ) sum=sum+i ; printf ( "%d\n" ,sum ); }
因為沒有用0值初始化變量sum,也就是使用了不確定的sum值參加了求和,所以運算結果錯誤。實際上,應該對所使用的變量都初始化,以避免出現這類問題。例如,可使用如下語句初始化變量。
int sum=0 , i=0 ;
【例3.6】分析下面程序中的錯誤語句。
#include <stdio.h> void main ( ) { int a=b=25 , c ; int d=a+b+c ; c=35 ; printf ( "%d\n" , d ); int f=55 ; printf ( "%d+%d=%d\n" , a ,f , a+f ); }
語句「int a=b=25」是錯誤的,正確形式為「int a=25,b=25」。因為變量c是在變量d後賦值的,所以「int d=a+b+c;」的值是不確定的。「int f=55;」放在執行語句之後也是錯誤的,C語言需要將所有對變量的聲明都放在執行語句之前(C++可以在使用時再聲明,這是兩者的區別)。改正的方法並不唯一,下面是一種參考方法。
int a=25 , b=25 ,c=35 ; int d=a+b+c ,f=55 ;