3590|5

493

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【求助】代码中的这个用法是什么意思 [复制链接]

各位大神大家好,目前在阅读代码时,发现有这么一个用法【f->keep_last = !!keep_last;】这个【!!】是个什么意思?这么用有什么好处呢?
  1. static int frame_queue_init(FrameQueue *f, PacketQueue *pktq, int max_size, int keep_last)
  2. {
  3.     int i;
  4.     memset(f, 0, sizeof(FrameQueue));
  5.     if (!(f->mutex = SDL_CreateMutex())) {
  6.         av_log(NULL, AV_LOG_FATAL, "SDL_CreateMutex(): %s\n", SDL_GetError());
  7.         return AVERROR(ENOMEM);
  8.     }
  9.     if (!(f->cond = SDL_CreateCond())) {
  10.         av_log(NULL, AV_LOG_FATAL, "SDL_CreateCond(): %s\n", SDL_GetError());
  11.         return AVERROR(ENOMEM);
  12.     }
  13.     f->pktq = pktq;
  14.     f->max_size = FFMIN(max_size, FRAME_QUEUE_SIZE);
  15.     f->keep_last = !!keep_last;
  16.     for (i = 0; i < f->max_size; i++)
  17.         if (!(f->queue[i].frame = av_frame_alloc()))
  18.             return AVERROR(ENOMEM);
  19.     return 0;
  20. }
复制代码



最新回复

666学习了  详情 回复 发表于 2016-7-16 07:36
点赞 关注

回复
举报

6040

帖子

203

TA的资源

版主

沙发
 
这就是一个整型转布尔型的操作,把一个整型数转成0或者1.

点评

嗯嗯,明白了。十分感谢。  详情 回复 发表于 2016-7-5 10:31
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

板凳
 
本帖最后由 ywlzh 于 2016-7-1 17:28 编辑

两个!是为了把非0值转换成1,而0值还是0




举个例子:





  !在以中叫“取非”运算符,属于逻辑算符,后面只有两种状态,“真”和“假”。“真”被!一下就成了“假”,而“假”被!一下就成了“真”。C又规定非0为“真”,0为“假”。  



那个一个数 num 原本等于 78(可以为任意非0值),!num=0,那么!!num=!0=1


点评

嗯嗯,懂了。谢谢  详情 回复 发表于 2016-7-5 10:30
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

493

帖子

1

TA的资源

一粒金砂(高级)

4
 
ywlzh 发表于 2016-7-1 17:24
两个!是为了把非0值转换成1,而0值还是0




举个例子:





  !在以中叫“取非”运算符,属于 ...

嗯嗯,懂了。谢谢
 
 
 

回复

493

帖子

1

TA的资源

一粒金砂(高级)

5
 
lcofjp 发表于 2016-7-1 13:56
这就是一个整型转布尔型的操作,把一个整型数转成0或者1.

嗯嗯,明白了。十分感谢。
 
 
 

回复

732

帖子

2

TA的资源

纯净的硅(中级)

6
 
666学习了
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表