两个不懂的程序,在下初学阶段,望指点,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/29 18:54:57
#include<stdio.h>
int N;
void main()
{static int N;
int i=N++;
if(i<=0)
{extern int N;
int j=++N; printf("%d",j);
}
else{int j=N-1; printf("%d",j);}
}
上面这个结果输出1,N没有具体数字 怎么算的啊;

#include<stdio.h>
main()
{int count=-1;
printf("%d,%u,%o,",count,count,count);
}
结果为-1,4294967295,37777777777,

1、
我稍微修改了一下,你可以看到其中的微妙关系。
C中,全局变量和静态变量是会被编译器初始化的(为0)
#include<stdio.h>
int N; //::N=0
void main()
{
static int N; //N=0
int i=N++; //i=0,N=1

if (i <=0)//yes
{
extern int N; //::N=0
int j = ++N; //j=::N=1
printf("%d\n",j); //1
}

int j=N-1;//j=0,N=1
printf("%d\n",j);//0

}
2、
-1的补码表示为0xFFFF FFFF
printf("%d,%u,%o,",count,count,count); 将
分别以整形、无符号整形、八进制打印该数