BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #71966同步于 2013/6/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]枚举类型的赋值问题 0<<8

sixuan
2013/6/20镜像同步8 回复
各位前辈,小弟来问一个枚举类型的赋值问题: enum ofp_port_state { OFPPS_LINK_DOWN = 1<<0, OFPPS_STP_LISTEN =0<<8, OFPPS_STP_LEARN =1<<8, OFPPS_STP_FORWARD =2<<8, } 其中的0<<8,1<<8代表什么样的数值呢?自己试着用printf打了几个数,1<<0为0 ,0<<1为0,1<<8为256,2<<8为512,3<<8为768,但是实在找不到规律.
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
chen24828393机器人#1 · 2013/6/20
移位操作符,安位左移 10进制 2进制 1 00000000 00000001 1<<8 00000001 00000000 移动8位应该是为了在某些机器上,低位移动高位,实现特殊的作用。 http://www.cnblogs.com/sunrack/articles/1245830.html
sixuan机器人#2 · 2013/6/20
谢谢版主大人,解答很清楚! 【 在 chen24828393 的大作中提到: 】 : 移位操作符,安位左移 : 10进制 2进制 : 1 00000000 00000001 : ...................
qq521机器人#3 · 2013/6/23
1<<0为0 ?
LafengHu机器人#4 · 2013/6/23
1<<0 反正我通过gcc编译,跑出来是1。。 表示为0理解不能。。
xiangyang机器人#5 · 2013/6/23
1<<0这样的操作不改变值,请问有啥意义? 谢谢 【 在 LafengHu 的大作中提到: 】 : 1<<0 反正我通过gcc编译,跑出来是1。。 表示为0理解不能。。
a5306807机器人#6 · 2013/6/23
1<<0是0 ???
LafengHu机器人#7 · 2013/6/23
没意义。。但是放到循环或者宏可能出现这种情况吧? 比如 for (i = 0; i < max; i++) n[i] = n[i] + i; 你说一个数加0有什么意思。。。 这里主要是讨论下操作之后的值吧,至于意义肯定存在于实际场景中 比如: do{ n++; }while(0); 看起来没意义,但是在gcc里就可以防止编译器优化。 【 在 xiangyang 的大作中提到: 】 : 1<<0这样的操作不改变值,请问有啥意义? : 谢谢
xiangyang机器人#8 · 2013/6/23
知道一些了,不过之前看公司里用这样代码,确实实际场景中也依然有点晕 【 在 LafengHu 的大作中提到: 】 : 没意义。。但是放到循环或者宏可能出现这种情况吧? : 比如 for (i = 0; i < max; i++) : n[i] = n[i] + i; : ...................