C++ 每200帧替换一个对象

C++ 每200帧替换一个对象,c++,C++,初学者的问题,请耐心听我说。我怎样才能使这个循环每200帧松树就与树交换一次呢 int counter; void swap(void) { cout << counter++ << endl; if (counter <= 200) drawPine(0, 0); else drawTree(0, 0); } int计数器; 无效掉期(无效){ coutint计数器; 无效掉期(无效){ coutvoid swap(){ 静态整数计数器=0;

初学者的问题,请耐心听我说。我怎样才能使这个循环每200帧松树就与树交换一次呢

int counter;

void swap(void) {
cout << counter++ << endl;
if (counter <= 200)
    drawPine(0, 0);
else
    drawTree(0, 0);
}
int计数器;
无效掉期(无效){
cout
int计数器;
无效掉期(无效){
cout
void swap(){
静态整数计数器=0;
如果(计数器%400<200){
drawPine(0,0);
}否则{
drawTree(0,0);
}
计数器++;
}

计数器==INT\u MAX
处,我们得到溢出。@Kaz对于每秒递增60次的32位有符号INT,溢出发生在大约414天之后。如果将其设置为
无符号INT
,问题是范围不能被400整除。32位
UINT\u MAX
值模400是96。@Kaz…这将在2年。没关系。这是假设一个32位的int,现在,这是一个例外,而不是规则。@3大多数主流64位环境的C编译器都有一个32位的
int
类型。(ISO C允许它小到16。)在问题中,您是在哪里读到的,两年或两年以上不需要正确运行?另外,指定的帧速率在哪里,我们如何知道这是实时渲染?另一个
int
溢出,错误地关闭。模400值从0到399。前200是0到199,第二个是200是从200到399。所以你需要<200才能进行偶数分割。@Kaz已修复。谢谢。在运行…INT_MAX帧后,溢出会导致轻微的口吃。将
计数器
更改为
无符号整数
并将间隔改为2的幂可以消除这种情况,而无需除法。(即使在2019年,仍然非常缓慢。)@Kaz即使是32位整数,也需要2.27年才能溢出。对于64位,大约需要9749040289.25…年。我认为任何帧结巴的东西每两年一次都是成功的。这是60赫兹,这在循环中的
cout
是绝对不会发生的。
int counter;

void swap(void) {
    cout << counter << endl;

    counter = (1 + counter) % 400;    
    if (counter < 200)
        drawPine(0, 0);
    else
        drawTree(0, 0);
}
unsigned int counter;

void swap(void) {

    cout << counter++ << endl;

    if (counter % 512 < 256)
        drawPine(0, 0);
    else
        drawTree(0, 0);
}
void swap() {
  static int counter = 0;
  if (counter % 400 < 200) {
    drawPine(0, 0);
  } else {
    drawTree(0, 0);
  }
  counter++;
}