为什么在gcc编译器中运行此代码时会出现运行时错误?它在turbo C中运行良好。我已经在这方面工作了几天而根本没有进展。请帮助。
#include<stdio.h>
int main()
{
int T,i=0,num,sum,temp,j;
int *N;
scanf("%d",&T);
while(i++<T)
{
scanf("%d",N);
temp=*N;
while((*N)-->0)
{
sum=0;
num=(*N)+1;
for(j=0;j<64;j++)
{
if(num&1)
sum+=1;
num=num>>1;
}
if(((*N)+1+sum)==temp)
break;
}
printf("%d\n",((*N)<0)?-1:(*N)+1);
}
return 0;
}
答案 0 :(得分:2)
包含头文件
# include <stdlib.h>
在使用之前将内存分配给指针。
int *N;
N = (int *)malloc (sizeof (int));
使用后释放已分配的内存
free (N);