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