讀古今文學網 > C語言解惑 > 3.3 基本數據的初始化 >

3.3 基本數據的初始化

【例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
;