не может использовать while () всегда true? - PullRequest
0 голосов
/ 05 ноября 2018

В основном я пытаюсь найти скорость и то, как далеко мой процессор может рассчитать в C.

вот что я пытаюсь сделать;

#include <stdio.h>

int main(){
    int i = 100;
    while(1==1){
        i *= i;
        printf("[i] : %d\n", i);
    }
    return 0;
}

но с приведенным выше кодом, программа никогда не компилируется / не запускается и не застревает в начале, она даже заставляет программу сказать Не отвечает .

Я использую code :: block и никогда не вижу вывода на консоли.

Все ответы очень ценятся.

1 Ответ

0 голосов
/ 05 ноября 2018

Ваш код работает более или менее, как ожидалось:

Вывод может выглядеть примерно так: (// это мои комментарии, а не часть вывода)

[i] : 10000             // 100 * 100
[i] : 100000000         // 10000 * 10000
[i] : 1874919424        // 100000000 * 100000000 (int overflow)
[i] : 0                 // 1874919424 * 1874919424 (int overflow resulting in 0)
[i] : 0                 // from now on you only get 0, because 0 * 0 = 0
[i] : 0
[i] : 0
[i] : 0
[i] : 0
[i] : 0

int переполнение дает неопределенное поведение, и результат на вашей платформе может быть другим.

Попробуйте эту слегка измененную версию вашей программы, она выполняет только 10 циклов.

#include <stdio.h>

int main() {
  int i = 100;
  for (int count = 0; count < 10; count++)
  {
    i *= i;
    printf("[i] : %d\n", i);
  }

  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...