C程序的输出|集15

预测以下C程序的输出。 问题1

null

C

#include<stdio.h>
int main( void )
{
int a = 1;
int b = 0;
b = ++a + ++a;
printf ( "%d %d" ,a,b);
getchar ();
return 0;
}


产出:36

说明:++优先于+并从右向左运行。因此,最右边的++a给出a=2,最左边的++a给出a=3。现在,在计算时,b=3+3。在第二个++a之后,我们有a=3。因此b=3+3=6,a=3。因此,输出。 问题2

C

#include<stdio.h>
int main()
{
int a[] = {1, 2, 3, 4, 5, 6};
int *ptr = ( int *)(&a+1);
printf ( "%d " , *(ptr-1) );
getchar ();
return 0;
}


产出:6 &a 是整个数组的地址 a[] .如果我们加1到 &a ,我们得到“a[]+sizeof(a)”的基址。这个值被类型转换为int*。所以 ptr–1 指向[]的最后一个元素 如果您发现任何答案/解释不正确,或者您想分享有关上述主题的更多信息,请发表评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享