C 程序的输出 | 15套
预测以下 C 程序的输出。
问题 1
C
#include
int main(void)
{
int a = 1;
int b = 0;
b = ++a + ++a;
printf("%d %d",a,b);
getchar();
return 0;
}
C
#include
int main()
{
int a[] = {1, 2, 3, 4, 5, 6};
int *ptr = (int*)(&a+1);
printf("%d ", *(ptr-1) );
getchar();
return 0;
}
输出:3 6
说明:++ 优先于 + 并从右向左操作。因此,最右边的++a 给出a=2,而它左边的++a 给出a=3。现在,在评估时,b=3+3。在第二个++a之后,我们有a=3。因此 b=3+3=6 和 a=3。因此输出。
问题2
C
#include
int main()
{
int a[] = {1, 2, 3, 4, 5, 6};
int *ptr = (int*)(&a+1);
printf("%d ", *(ptr-1) );
getchar();
return 0;
}