一个程序代码,不知道哪里出错

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
/*一个程序代码,不知道哪里出错*/#include "stdio.h"main(){float sum;int i;for(i=2; i<6; i++){sum=sum+1.0/i;}printf("%f", sum);getch();}/*编译时,虽然输出了EXE,可是总是提示警告,警告说“可能在“sum”定义以前使用了它在函数main()”,搞不懂是为什么,那里出错了*/

                                                                                                LZ的问题,的确是由于编译器对变量的使用进行合法性检查时,所提示的警告信息。至于原因,在于变量声明时,是否初始化,对变量的使用是有影响的。如果是赋值,可以不进行初始化。如果是引用,则需要进行初始化。如果不初始化,虽然系统会按照数据类型的默认值进行运算,但警告信息是少不了的。在LZ的语句sum=sum+1.0/i;中,右边的sum 即是直接引用,变量sum就需要初始化,可以写成float sum=0; 如果只有左边的sum,只是赋值使用,那么就不必初始化,这样就避免了警告信息。                                       
提问者对答案的评价:

                                                                                                你说的情况不是错误。而是编译器警告信息。为了防止程序员在编写代码时出现笔误性的错误,编译器在编译你的代码时,会对一些看似非法的变量定义、取值等等操作进行合法性检查。当编译器发现你定义了sum变量,而没有给他赋初始数值时就会在编译结束后发出警告。但这并不影响你程序的可执行文件的生成。如果你比较介意这种警告,可以在编译环境中设置警告敏感度。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行