首页
社区
课程
招聘
哪位老大解释一下这个C语言的?
发表于: 2010-2-18 11:42 8710

哪位老大解释一下这个C语言的?

2010-2-18 11:42
8710
key |= shift_l        ? FLAG_SHIFT_L        : 0;
key |= shift_r        ? FLAG_SHIFT_R        : 0;
key |= ctrl_l        ? FLAG_CTRL_L        : 0;
key |= ctrl_r        ? FLAG_CTRL_R        : 0;
key |= alt_l        ? FLAG_ALT_L        : 0;
key |= alt_r        ? FLAG_ALT_R        : 0;

key的初值为0x108,shift_l的值为1,其余值为0,FLAG_SHIFT_L值为0x200, 下面的依次为0x400,0x800,0x1000,0x2000,0x4000,最后的值为多少,如何计算的?说出计算的过程即可....

[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
key |= shift_l  ? FLAG_SHIFT_L  : 0; 如果key不等于shift_l为真FLAG_SHIFT_L 如果key不等于shift_l为真为假0
2010-2-18 12:03
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
<script>
a=1;
a=2?alert("hehe"):alert("cccc");
</script>
这样测试就明白了
2010-2-18 12:05
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
<script>
a=1;
a==2?alert("hehe"):alert("cccc");
</script>
打错是 ==
2010-2-18 12:05
0
雪    币: 7217
活跃值: (4205)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
是"|",不是"!",是位或运算key=key|shift_l,然后判断key是真还是假
2010-2-18 12:14
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我只关心这个表达式的优先级是怎么样的……
是 key = (key | shift_l) ? FLAG_SHIFT_L : 0;
还是 key = key | (shift_l ? FLAG_SHIFT_L : 0);
2010-2-18 16:26
0
雪    币: 7217
活跃值: (4205)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
从程序的用意看,应该是第二种.
楼下的继续...
2010-2-18 16:39
0
雪    币: 424
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
各种赋值运算是除逗号外最低的,所以是第二种
2010-2-18 17:45
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
显然是 key = key | (shift_l ? FLAG_SHIFT_L : 0);
2010-2-18 17:57
0
雪    币: 220
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
同意楼上的说法!!!!
2010-2-18 19:14
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习,学习。
2010-2-18 19:29
0
雪    币: 106
活跃值: (276)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
回复9楼的
正确的是这样
显然是 key = key | =(shift_l ? FLAG_SHIFT_L : 0);

解释:
先是一个三目运算符
shift_l ? FLAG_SHIFT_L : 0
之后将结果按位与操作,|=
之后将结果保存到key
这个和a*=b*2是一样的,b先和2相乘,之后在和a相乘在赋值给a
2010-2-18 20:53
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我学的C语言没有这些。。。难怪看不懂。。
2010-2-19 12:28
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
同意这个解释
2010-2-20 19:17
0
雪    币: 106
活跃值: (276)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
是不是多了一个赋值符号?感觉有点怪怪的,应该是这样才对
key = key | (shift_l ? FLAG_SHIFT_L : 0);
2010-2-21 00:43
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不太明白,学习一下
2010-2-21 22:15
0
雪    币: 15
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
你学的是不是C语言哦:)怎么可能没这些,三目运算符,位或 会没有?
2010-2-22 14:02
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
看不懂!~  新手
2010-2-22 15:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
擦,,,,,,
2010-2-23 15:50
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
初学者~没看懂~呵呵
2010-2-25 16:14
0
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
学习c语言的应该都看的懂哦......而且这样的单个句子,实际运行下就明白了.
2010-2-28 17:13
0
游客
登录 | 注册 方可回帖
返回
// // 统计代码