免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: HopeCao
打印 上一主题 下一主题

这个只有两行的C程序至少有80%的人会判断错,不信的就进来! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-02-25 10:16 |只看该作者

这个只有两行的C程序至少有80%的人会判断错,不信的就进来!

agree with menp9999

论坛徽章:
0
12 [报告]
发表于 2003-02-25 11:02 |只看该作者

这个只有两行的C程序至少有80%的人会判断错,不信的就进来!

第一个输出“S”,原因是*(ptr++)加上括号后++运算后再取指针;
   第二个输出"10",i的值不变;

论坛徽章:
0
13 [报告]
发表于 2003-02-25 11:07 |只看该作者

这个只有两行的C程序至少有80%的人会判断错,不信的就进来!

第一个是c,ptr++是在语句执行完后才执行++操作的,有没有括号都一样。
第二个是10,单独的没有赋值的移位操作是不会改变原数大小的。
    如果改成i=i<<1;i=i>;>;5;的话,结果就是0了。

论坛徽章:
0
14 [报告]
发表于 2003-02-25 11:16 |只看该作者

这个只有两行的C程序至少有80%的人会判断错,不信的就进来!

第一个应该是"c",不好意思!

论坛徽章:
0
15 [报告]
发表于 2003-02-25 11:17 |只看该作者

这个只有两行的C程序至少有80%的人会判断错,不信的就进来!

第一个应该是"c",不好意思!

论坛徽章:
0
16 [报告]
发表于 2003-02-25 11:18 |只看该作者

这个只有两行的C程序至少有80%的人会判断错,不信的就进来!

第一段代码是c
第二段代码是10

论坛徽章:
0
17 [报告]
发表于 2003-02-25 11:33 |只看该作者

这个只有两行的C程序至少有80%的人会判断错,不信的就进来!

原帖由 "zhutr" 发表:
第一个是c,ptr++是在语句执行完后才执行++操作的,有没有括号都一样。
第二个是10,单独的没有赋值的移位操作是不会改变原数大小的。
    如果改成i=i<<1;i=i>;>;5;的话,结果就是0了。

为什么加()号不能改变运算优先级?能说明一下么?
实际就是说++有特殊的用法,
*(ptr++)<>;*(ptr+1),是不是这个意思.我找了一下资料,没有找到解释的说明.

论坛徽章:
0
18 [报告]
发表于 2003-02-25 11:58 |只看该作者

这个只有两行的C程序至少有80%的人会判断错,不信的就进来!

1 c
    机器里输出的

论坛徽章:
0
19 [报告]
发表于 2003-02-25 12:46 |只看该作者

这个只有两行的C程序至少有80%的人会判断错,不信的就进来!

其实这两个题是考对C的理解的。答案应该是C,10.
第一题:我们都知道++是什么意思,那么加括号了就会改变吗?我们知道PTR++,的意思是先用,用了再加一,这个例子中我们怎么用的?就是来取值用,用完了之后才完成加一的。
第二个,大家也都明白>;>; <<这两个运算符,但我们不要忘记了,C语言做位移运算是要将数据拷入到寄存器中来运算的,他不可能就在数据的本身上直接做运算的,如果那样的话,其不是要乱了套了。所以两道题的答案应该是C,10

论坛徽章:
0
20 [报告]
发表于 2003-02-25 13:07 |只看该作者

这个只有两行的C程序至少有80%的人会判断错,不信的就进来!

1.   c 因为是++在后面的话,传递过去的是本身 的值。
2。 10,移位操作并不影响本身的值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP