OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5484|回复: 22

C语言好的进来!差的就别进来丢人了!

[复制链接]

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
发表于 2016-5-17 07:19:49 | 显示全部楼层 |阅读模式
1金钱
if((OSRdyTbl[prio>>3]&=~OSMapTbl[prio&0x07])==0)


把上面这句话分解一下,实在难以理解。
抽象一下就是
if((a&=~b)==0)


请高手解释一下。

最佳答案

查看完整内容[请看2#楼]

~b不是非b,是b取反,其他的解释看1L。 !b这个才是非b。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-5-17 07:19:50 | 显示全部楼层
~b不是非b,是b取反,其他的解释看1L。
!b这个才是非b。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-5-17 08:05:20 | 显示全部楼层
a与非b赋值给a  如果a等于0           我是这么理解的
回复

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-11-7
在线时间
51 小时
发表于 2016-5-17 13:10:37 来自手机 | 显示全部楼层
看到这标题我都不想回答了
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3308
金钱
3308
注册时间
2013-4-10
在线时间
328 小时
发表于 2016-5-17 13:18:37 | 显示全部楼层
(*(void(*)())0)();
回复

使用道具 举报

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
 楼主| 发表于 2016-5-17 14:09:06 来自手机 | 显示全部楼层
东风序 发表于 2016-5-17 13:10
看到这标题我都不想回答了

C语言大神,您就回答一下吧
回复

使用道具 举报

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
 楼主| 发表于 2016-5-17 18:19:20 | 显示全部楼层
止天 发表于 2016-5-17 08:05
a与非b赋值给a  如果a等于0           我是这么理解的

谢谢谢谢
回复

使用道具 举报

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
 楼主| 发表于 2016-5-17 18:19:35 | 显示全部楼层
ysq7120 发表于 2016-5-17 07:19
~b不是非b,是b取反,其他的解释看1L。
!b这个才是非b。

谢谢大神
回复

使用道具 举报

33

主题

982

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7844
金钱
7844
注册时间
2014-8-13
在线时间
1582 小时
发表于 2016-5-17 22:01:03 | 显示全部楼层
u8 cPtr1 = prio >> 3;
u8 cPtr2 = prio & 0x07;
u8 cRslt1 = OSMapTbl[cPtr2];
cRslt1 = ~cRslt1;
u8 cRslt2 = OSRdyTbl[cPtr1];
cRslt2 = cRslt2 & cRslt1;
if(0 == cRslt2)

可能优先级有错误,不过拆开一步步的写大概就这样。



if((OSRdyTbl[prio>>3]&=~OSMapTbl[prio&0x07])==0)
这么写代码,编译器能识别,自己写着玩也可以,但是在项目里这么写会被打回的,多次之后你会被辞退。

原因就是不够直接明了,不方便维护管理。
别人看你的代码的时候会很费劲。

比如,微软的开发,有一个环节就是大家一起读同事的代码,已便代码直接明了查找bug什么的。
项目里的代码不要求高深花哨技巧,只要求直观明了,容易维护。
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3985
金钱
3985
注册时间
2015-11-14
在线时间
540 小时
发表于 2016-5-17 22:33:18 | 显示全部楼层
这个叫难吗?
回复

使用道具 举报

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
 楼主| 发表于 2016-5-17 22:37:24 | 显示全部楼层
mack13013 发表于 2016-5-17 22:01
u8 cPtr1 = prio >> 3;
u8 cPtr2 = prio & 0x07;
u8 cRslt1 = OSMapTbl[cPtr2];

谢谢您的耐心讲解,要不微信给你发个红包?
回复

使用道具 举报

3

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-1-13
在线时间
70 小时
发表于 2016-5-18 07:25:07 来自手机 | 显示全部楼层
楼主名字好霸气,为何不多贴点代码?让我们断章取义?
回复

使用道具 举报

18

主题

422

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1139
金钱
1139
注册时间
2014-5-24
在线时间
116 小时
发表于 2016-5-19 09:41:48 | 显示全部楼层
进来看有啥难到会丢人
I See Fire.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.  只给方向,不妨碍思考
回复

使用道具 举报

17

主题

111

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2012-11-3
在线时间
30 小时
发表于 2016-5-24 11:50:52 | 显示全部楼层
本帖最后由 abb200628 于 2016-5-24 11:52 编辑

                                                                                    
老夫驾鹤,有事烧纸!
回复

使用道具 举报

32

主题

283

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1330
金钱
1330
注册时间
2014-3-27
在线时间
351 小时
发表于 2016-5-24 12:27:00 | 显示全部楼层
起这种标题,帮你的人会少一半……
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2015-7-14
在线时间
17 小时
发表于 2016-5-25 11:17:46 | 显示全部楼层
likunxue 发表于 2016-5-17 13:18
(*(void(*)())0)();

void(*)(),参数为空,返回为void的函数指针类型
void(*)())0  ,把0转化为上面的函数指针类型
*(void(*)())0),引用指针
(*(void(*)())0)(),调用函数
不知道这样对不对
回复

使用道具 举报

1

主题

29

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4582
金钱
4582
注册时间
2016-4-16
在线时间
282 小时
发表于 2016-5-25 17:46:58 | 显示全部楼层
mack13013 发表于 2016-5-17 22:01
u8 cPtr1 = prio >> 3;
u8 cPtr2 = prio & 0x07;
u8 cRslt1 = OSMapTbl[cPtr2];

解释的真好
【有理想】【有道德】【有文化】【有纪律】
回复

使用道具 举报

29

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
511
金钱
511
注册时间
2015-10-11
在线时间
102 小时
发表于 2016-5-28 09:28:40 | 显示全部楼层
这也要C语言学的好啊,这不是入门级的嘛
回复

使用道具 举报

5

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2016-5-29
在线时间
5 小时
发表于 2016-6-1 19:28:20 | 显示全部楼层
好纠结
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-4 12:13:10 | 显示全部楼层
wsnsyy2015 发表于 2016-5-25 11:17
void(*)(),参数为空,返回为void的函数指针类型
void(*)())0  ,把0转化为上面的函数指针类型
*(void ...

让我茅塞顿开
回复

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-3-29
在线时间
11 小时
发表于 2016-6-7 18:58:06 | 显示全部楼层
c语言深度剖析  去看这本书。
回复

使用道具 举报

18

主题

190

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2012-6-18
在线时间
157 小时
发表于 2016-6-23 16:17:43 来自手机 | 显示全部楼层
说好的差的不要来,楼主还是来了!
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2014-12-1
在线时间
8 小时
发表于 2016-6-25 17:03:50 | 显示全部楼层
这种问题 C语言一般的  就能帮你解决了 呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 20:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表