读书人

for(i=零;ilt;=300;i+20)…编译时出现关

发布时间: 2013-12-07 22:19:20 作者: rapoo

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)

读书人网 >C语言

热点推荐