printf的一个变态用法printf("%#o",10)

来源:百度知道 编辑:UC知道 时间:2024/04/30 01:22:57
老师的作业里有个题目很变态
如下:
下列代码段将会打印出_______。
printf("%#o\n", (010<<1^1)&(0xe<<1));
显然后面一段是一个位运算,但那个控制符里面的"%#o"翻遍课本都没找到。如大家所知%o是以八进制输出整型,然后我运行之后发现%#o输出的是C语言中的八进制表示法,即在八进制数前加0。

寻求确切解释。
我的问题在前面的控制符部分,不在后面的位运算,后面的位运算优先级课本上都有解释。
而且,这只是笔试的题目,没有那个白痴会用位运算来做数字运算就能完成的东西,那么多年来也就笔试里才会想想位运算而已。

解释什么,你的机器有C/C++环境吧,输入运行一下就明白了。

这类作业无聊,对学生有害无益!!!

运算符的优先级非常复杂,只需要记住先*/后+-就行,其它的都带括号,谁要是在实际软件开发中写这样的表达式,一定是神经病,一定会被(优秀的团队)开除。

有这样的老师,就有中国软件开发出现天才多、产业弱的现状!