发布于 2012-12-04 09:38:36
56楼
好热的帖子,我也来掺和几句,说说我的理解。
1、word是数据类型,但不是数值类型,而是16位长度的位串。和byte、time date tod dt以及string一样,可以没有数值的内涵的,所以取值范围也用0-16#ffff表示,而不是 -32768-32767。
2、前段时间用LAD写ob86时,需要做判断,很周折。但一想,进入事件、离开事件、地址代号只是个代码而已,不是数值,无法做数值比较,也就释然了。
3、若是用STL写那段程序,可以直接比较。但==I 毕竟是数值比较指令,这样做实际上是把word当做int使用,虽然达到了比较的目的,但这一步是没有物理意义的。
4、stl scl可以直接做word类型的运算比较,可编译通过,不知道有何作用。我一直觉得word做数值运算很凶险,因为工具不对,很可能造成不可预期的后果,却不能利用编译器排查。
5、自己写子程序的话,表示数值的用肯定用int类型。至于lib中的数值用word状况,我现在把它理解成不够完美。(或许以后才能正确理解,piw是数值吗?iw0是数值吗?ib0比ib1大,有什么意义?嘿嘿)。怎么办?要么不用、要么妥协,多用一次转换呗。再者用绝对地址也是一种妥协吧?
弱者道之用。