作业帮 > 综合 > 作业

int m=1,n=2,*p1=&m,*p2=n; printf("%d%d%d%d“,*p1,*p2,*p1=*p1+

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/14 22:11:33
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
int m=1,n=2,*p1=&m,*p2=n; printf(
首先这道题*p2=n是题目错了应该是*p2=&n
其次这道题目的考察是printf函数运算的顺序是从左往右还是从右往左(参数传递的顺序)
这个考察本身就是没有意义的,因为c语言没规定参数传递的顺序(即压栈顺序),这个要看编译器的
心情了,一般都是从右往左.如果lz不小心遇到这种题并且2个答案都有就按从右往左答题吧
最后这道题不管从左往右还是从右往左都不是1211
如果编译器的顺序是从右往左那就是lz看到的结果:5253
如果编译器的顺序是从左往右的话那就是:1235
自己写程序不好写这种有歧义的代码