C语言编程中long和int的区别,在这里为什么第一个是错的,第二个就是对的?

原问题:C语言编程中long和int的区别,在这里为什么第一个是错的,第二个就是对的?
分类:编程开发 > 最后更新时间:【2017-07-28 14:32:14】
问题补充:

第一个:

#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;

}

你试下看。

最佳答案由网友  宛丘山人  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
20

分享到:

其他回答

其它网友回答:
一般情况下,只能把小范围的赋值给大范围的数据,printf("%d",a)这条语句明显把大范围的赋值给小范围的了是错误的,将其改为printf("%f",a),应该就对了。


追答:
应该是%ld
    推荐