预测以下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