首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

for(i=零;i<=300;i+20)…编译时出现关于“+”的警告

2013-12-07 
for(i0i300i+20)……编译时出现关于“+”的警告~#includestdio.hdouble tempinter(double m)/*celsius

for(i=0;i<=300;i+20)……编译时出现关于“+”的警告~

#include<stdio.h>
double tempinter(double m);/*celsius to fahr*/
main(){
int i;
for(i=0;i<=300;i+20){
printf("%3.0f %6.1f\n",i,tempinter(i));

}
return 0;
}
double tempinter(double c){
double f;
f=(9/5)*c+32;
return f;
}
编译后出现D:\MSDev98\MyProjects\tfunctiontem\tfunctiontem.cpp(5) : warning C4552: '+' : operator has no effect; expected operator with side-effect

tfunctiontem.obj - 0 error(s), 1 warning(s)

然后把i+20变为(i+20)就没有警告咯,什么情况

而且这段代码有问题,运行后死循环……

新手求解~

[解决办法]


for(i=0;i<=300;i+20){

//换成
for(i=0;i<=300;i = i+20){ // i++的意思是 i = i +1 

[解决办法]
每次循环i值不会变化,所以会无限循环
i需要赋值,i += 20;
[解决办法]

#include<stdio.h>
double tempinter(double m);/*celsius to fahr*/
main(){
int i;
for(i=0;i<=300;i+=20){
printf("%3.0lf %6.1lf\n",(double)i,tempinter(i));

}
return 0;
}
double tempinter(double c){
double f;
f=(9/5)*c+32;
return f;
}



引用:
#include<stdio.h>
double tempinter(double m);/*celsius to fahr*/
main(){
int i;
for(i=0;i<=300;i+20){
printf("%3.0f %6.1f\n",i,tempinter(i));

}
return 0;
}
double tempinter(double c){
double f;
f=(9/5)*c+32;
return f;
}
编译后出现D:\MSDev98\MyProjects\tfunctiontem\tfunctiontem.cpp(5) : warning C4552: '+' : operator has no effect; expected operator with side-effect

tfunctiontem.obj - 0 error(s), 1 warning(s)

然后把i+20变为(i+20)就没有警告咯,什么情况

而且这段代码有问题,运行后死循环……

新手求解~

[解决办法]
;i+20不会改变i值,i+20是一个没有意思的操作,循环将是一个死循环
[解决办法]
死循环的原因是i+20;for(;;)第三段是更新循环变量表达式,也就是说i如何变化i+20并没有改变i的值,i永远是0;而且i你定义的是int调用的时候进入的定义为double用一个强制转化符讲int变化为double 应该就没问题了。
[解决办法]
i+20 的结果被抛弃 

i+=20;
[解决办法]
i+20毫无意义, 这种运算需要先赋值才可以....比如 for(int i=0;i<=300;i+=20)

热点排行