首页 > 代码库 > 初学者常见错误1——赋值时的类型转换
初学者常见错误1——赋值时的类型转换
猜测下面程序的输出结果,并上机尝试:
1.
#include<stdio.h>#include<math.h>int main(){ printf("%d",pow(5,2));}
2.
#include<stdio.h>#include<math.h>int main(){ printf("%f",pow(5,2));}
3.
#include<stdio.h>#include<math.h>int a[105];int main(){ int x,y,sum=0,n=0; while (scanf("%d",&x)==1) { a[n++]=x; } for (int i=0;i<n;i++) for (int j=i+1;j<n;j++) sum=sum+pow(a[i],2)-pow(a[j],2); printf("%f",sum);}
4.
#include<stdio.h>#include<math.h>int a[105];int main(){ int x,y,sum=0,n=0; while (scanf("%d",&x)==1) { a[n++]=x; } for (int i=0;i<n;i++) for (int j=i+1;j<n;j++) sum=sum+pow(a[i],2)-pow(a[j],2); printf("%d",sum);}
答案:1.0 2. 25.000000 3.无论你输入任何数据,输出结果都为0 4.按实际结果输出
原因:
(1)指数函数pow(x,y)的计算结果为双精度实数。
(2)赋值时的类型转换规则:float、double型赋值给int型:直接截断小数。
sum=sum+pow(a[i],2)-pow(a[j],2);
(3)使用printf输出时,如果格式控制符和输出列表不一致,导致输出结果为0.
初学者常见错误1——赋值时的类型转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。