【求助】代码中的这个用法是什么意思

2019-03-26 12:29发布

各位大神大家好,目前在阅读代码时,发现有这么一个用法【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 ", SDL_GetError());
  7.         return AVERROR(ENOMEM);
  8.     }
  9.     if (!(f->cond = SDL_CreateCond())) {
  10.         av_log(NULL, AV_LOG_FATAL, "SDL_CreateCond(): %s ", 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. }
复制代码


此帖出自Linux与安卓论坛
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。