在这个程序中,假设数组从2000开始,那么元素应该存在于内存位置arr [1] = 2004和arr [5] = 2020.如果是这样的话,那么(ji)应该给出16,j和i的存储位置之间的差异.但是它给ji的值'4'.为什么它没有给出值16?
main()
{
int arr[]={10,20,30,45,67,56,74};
int *i,*j;
i=&arr[1] ;
j=&arr[5] ;
printf ("%d %d",j-i,*j-*i);
}
Run Code Online (Sandbox Code Playgroud) {
int i=1;
while(i<=32767)
{
printf("%d",i);
i=i+1;
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎是一个简单的程序打印1到32767 ...但当我达到32767 ...在递增值1 .....它试图转到32768,它超出整数范围,并转到另一侧是-32768 .....由于哪个条件变为真,因为我<= 32767即-32768 .....所以它应该作为无限循环工作.我的Dev C++编译器只打印1到32767 ....它不能作为无限循环.任何人
int i;
while(i=10)
{
printf("%d\n",i);
i=i+1;
}
Run Code Online (Sandbox Code Playgroud)
有一个程序,其中while(i = 10)表示while(1)[通常]表示while循环为true.因此它应该只打印10一次并将i的值递增1,即i变为11.但输出是无数次打印'10'.为什么会这样?我的平台是:64位Windows 7并使用32位Dev C++编译器.