小编Dim*_*ski的帖子

这个C函数应该总是返回false,但它不会

我很久以前在一个论坛里偶然发现了一个有趣的问题,我想知道答案.

考虑以下C函数:

在f1.c

#include <stdbool.h>

bool f1()
{
    int var1 = 1000;
    int var2 = 2000;
    int var3 = var1 + var2;
    return (var3 == 0) ? true : false;
}
Run Code Online (Sandbox Code Playgroud)

这应该总是返回falsevar3 == 3000.该main函数如下所示:

main.c中

#include <stdio.h>
#include <stdbool.h>

int main()
{
    printf( f1() == true ? "true\n" : "false\n");
    if( f1() )
    {
        printf("executed\n");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

由于f1()应该总是返回false,人们会期望程序只能在屏幕上打印一个false.但是在编译并运行它之后,还会显示执行:

$ gcc main.c f1.c -o test …
Run Code Online (Sandbox Code Playgroud)

c gcc

311
推荐指数
4
解决办法
2万
查看次数

找不到流 0 的编解码器参数

当我运行此命令时:

ffmpeg -y -i ./in.mp4 -c:v png -f image2pipe -thread_queue_size 1024 -r 25 -t 186.75 -i - -filter_complex overlay=0:0 -c:v libx264 -pix_fmt yuv420p -movflags +faststart ./out.mp4 < ./out.png
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

(git)-[master] 
ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse …
Run Code Online (Sandbox Code Playgroud)

ffmpeg

5
推荐指数
1
解决办法
1万
查看次数

更快的方法在gnuplot中制作电影

我想我们已经使用gnuplot了几十年.但是仍然没有好的方法来获得良好的视频输出gnuplot,对吗?我所做的是制作了大约30,000张图片(我必须使它具有良好的质量,以获得视频清晰度),然后用于ffmpeg制作视频:

ffmpeg -f image2 -r 10.0 -i capture.%d.png -qscale 1 filename.mp4
Run Code Online (Sandbox Code Playgroud)

但有一段时间我陷入其中或者需要很长时间.我们可能总是需要一个高质量和低文件大小的视频输出,为什么没有人试图做任何事情,或者有没有其他方法来制作视频输出gnuplot?我真的很难用高质量的视频制作gnuplot.

simulation video mp4 animation gnuplot

3
推荐指数
1
解决办法
265
查看次数

找到最大容器大小C++

我正在努力为以下问题找到一个好的解决方案:

我想实现一个函数,它接受可变数量的容器参数并返回最大容器的大小.这是一个例子:

std::vector<std::string> vStr(2, "foo");
std::vector<int> vInt(1, 123);
std::vector<double> vDouble(3, 1.1);
std::list<char> lChar(4, '*');
// or even more container

size_t uiMaxSize = getMaxContainerSize(vStr, vInt, vDouble, lChar /*, ...*/);
Run Code Online (Sandbox Code Playgroud)

在这种情况下getMaxContainerSize应返回4,因为lChar最大尺寸为4.

我已经使用以下方法实现了此解决方法cstdarg:

#include <cstdarg>
...
size_t getMaxContainerSize(int iCnt, ... )
{
  size_t uiMaxSize = 0;
  va_list ap;
  va_start(ap, iCnt);
  for(int i=0; i<iCnt; i++)
  {
    size_t uiTempSize = va_arg(ap, size_t);
    uiMaxSize = uiMaxSize<uiTempSize ? uiTempSize : uiMaxSize;
  }
  va_end(ap);
  return uiMaxSize;
}
...
size_t uiMaxSize = getMaxContainerSize( …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm stl c++11

1
推荐指数
1
解决办法
172
查看次数

标签 统计

algorithm ×1

animation ×1

c ×1

c++ ×1

c++11 ×1

ffmpeg ×1

gcc ×1

gnuplot ×1

mp4 ×1

simulation ×1

stl ×1

video ×1