C语言编程中long和int的区别,在这里为什么第一个是错的,第二个就是对的?
第一个:
#include<stdio.h>
#include<math.h>
int main()
{
int x;scanf("%d",&x);
printf("%d",pow(2,x));
return 0;
}
第二个:
#include<stdio.h>
#include<math.h>
int main()
{
int n;
long a;
scanf("%d",&n);
a=pow(2,n);
printf("%d",a);
return 0;
}
最佳答案
int, longd都属于整形数据,但是范围不同。
一般来说,int型数值应是-32768~32767的整数,占用2字节(16比特),long型取值范围:-2147483648~2147483647的整数,占用4字节(32比特)。
你的两个程序,不仅是类型不同,而且是语句格式也不同。你的功能是显示2^n,照理来说,只要n<=14, 两个程序运行是一样的。但是即使在这范围内,第一程序照样不能正常运行。但是,如果做如下改动,即两个于是采用大体一致,只是类型有区别,第一个程序在n<=14时,就能正常运行了。
#include<stdio.h>
#include<math.h>
int main()
{
int x,a;scanf("%d",&x);
a=pow(2,x) ;
printf("%d",a);
return 0;
}
你试下看。
其他回答
其它网友回答:
一般情况下,只能把小范围的赋值给大范围的数据,printf("%d",a)这条语句明显把大范围的赋值给小范围的了是错误的,将其改为printf("%f",a),应该就对了。
追答:
应该是%ld