此演示以Dev-Cpp++5.11为主,现在上代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ long long n;
long long a1,b1;
long long sb,sa=n;
long long ma,mb=0;
int m;
scanf("%lld",&n);
scanf("%d",&m);
printf("%lld\n",ma);
printf("%lld\n",mb);
printf("%lld\n",sa);
printf("%lld\n",sb);
for(long long i=0;i<=m-1;i++){
scanf("%lld",&a1);
scanf("%lld",&b1);
if(a1>ma){
ma=a1;
}
if(b1>mb){
mb=b1;
}
if(a1<sa){
sa=a1;
}
if(b1<sb){
sb=b1;
}
}
printf("%lld\n",ma);
printf("%lld\n",mb);
printf("%lld\n",sa);
printf("%lld\n",sb);
if((ma-sa)>=(mb-sb)){
long long p=ma-sa+1;
printf("%lld",p);
}
else{
long long s=mb-sb+1;
printf("%lld",s);
}
// ?????????
return 0;
}
我们以为这编译器编的有问题
现在运行下面代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ long long n;
long long a1,b1;
long long sb,sa=n;
long long ma,mb=0;
int m;
scanf("%lld",&n);
scanf("%d",&m);
for(long long i=0;i<=m-1;i++){
scanf("%lld",&a1);
scanf("%lld",&b1);
if(a1>ma){
ma=a1;
}
if(b1>mb){
mb=b1;
}
if(a1<sa){
sa=a1;
}
if(b1<sb){
sb=b1;
}
}
if((ma-sa)>=(mb-sb)){
long long p=ma-sa+1;
printf("%lld",p);
}
else{
long long s=mb-sb+1;
printf("%lld",s);
}
// ?????????
return 0;
}
结果是
我们就以为这编译器编的有问题当然可能卡住了,但就算没卡也是无法得到结果的,正确输出应如下图。
真是抱歉,当时知识不足,发了错误的知识,是由误人子弟之感啊。。。那么接下来讲解一下上面所述的问题。
1
long long a1,b1=0;意思是使b1=0,a1没有赋值,但占了内存
2
int main(int argc, char *argv[]){
long long n;
long long sb,sa=n;
scanf("%lld",&n);
printf("%d",sa);
return 0;
}
这里输出的sa不能得到scanf中得到的值,只是占了一定内存,定义了这么一个声明,但没有赋值。当您用了我上面的代码,就会发现输出为0这个随机值,这个由编译器决定。