int m=1,n=2,*p1=&m,*p2=n; printf("%d%d%d%d“,*p1,*p2,*p1=*p1+
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/09 03:16:26
int m=1,n=2,*p1=&m,*p2=n; printf("%d%d%d%d“,*p1,*p2,*p1=*p1+*p2,*p1=*p1+*p2); 输出结果
参考答案是1211,为什么后两个是11呢?
发现一个问题,*p1=&m,*p2=n;原题如此
我用编辑器运算了一下报错,把*p2=n改成*p2=&n后运行结果是5253
是不是题目出错了呢?
A1211 B1233 C1234 D1235
参考答案是1211,为什么后两个是11呢?
发现一个问题,*p1=&m,*p2=n;原题如此
我用编辑器运算了一下报错,把*p2=n改成*p2=&n后运行结果是5253
是不是题目出错了呢?
A1211 B1233 C1234 D1235
首先这道题*p2=n是题目错了应该是*p2=&n
其次这道题目的考察是printf函数运算的顺序是从左往右还是从右往左(参数传递的顺序)
这个考察本身就是没有意义的,因为c语言没规定参数传递的顺序(即压栈顺序),这个要看编译器的
心情了,一般都是从右往左.如果lz不小心遇到这种题并且2个答案都有就按从右往左答题吧
最后这道题不管从左往右还是从右往左都不是1211
如果编译器的顺序是从右往左那就是lz看到的结果:5253
如果编译器的顺序是从左往右的话那就是:1235
自己写程序不好写这种有歧义的代码
其次这道题目的考察是printf函数运算的顺序是从左往右还是从右往左(参数传递的顺序)
这个考察本身就是没有意义的,因为c语言没规定参数传递的顺序(即压栈顺序),这个要看编译器的
心情了,一般都是从右往左.如果lz不小心遇到这种题并且2个答案都有就按从右往左答题吧
最后这道题不管从左往右还是从右往左都不是1211
如果编译器的顺序是从右往左那就是lz看到的结果:5253
如果编译器的顺序是从左往右的话那就是:1235
自己写程序不好写这种有歧义的代码
int m=1,n=2,*p1=&m,*p2=n; printf("%d%d%d%d“,*p1,*p2,*p1=*p1+
main() { int x=10; int *p1=&x,*p2; p2=p1; printf("%d\n",*p2)
int *p1=malloc(4); int *p2=malloc(4); printf("p2-p1=%d\n",p2
int a=10,b=20,*p1,*p2; p1=&a; p2=&b; p1=p2; printf("%d,%d",*
int *p1,*p2; p1=(int *)malloc(10); p2=p1+2; printf("p1=0x%x,
int *p1;int x=971; p1=&x,printf("%d",*(p1++));
f_num=0#defineB0.809%d,%d\n",n1,n2,n3);swap(p1,p2)
若有说明:int *p1,*p2,m=5,n: 以下均是正确 赋值语句的选项是( ) A p1=&m:p2=&p1: B
swap(int *p1,int *p2) {int temp; temp=*p1; *p1=*p2; *p2=temp
p2->next=p1;p2=p1;
while(*p1) p1++; while(*p2) { *p1=*p2; p1++; p2++; } *p1=0;
void fun(char *w,int m) {char s,*p1,*p2;p1=w;p2=w+m-1;