Conversation
| int random = rand() % 10; | ||
| int number; | ||
|
|
||
| while (number != random) |
There was a problem hiding this comment.
В программе содержится неопределенное поведение — чтение неинициализированной переменной number. Возможно (но, естественно, маловероятно), значение в этой переменной совпадет с random. Тогда программа завершится сразу после начала работы.
P.S. Кстати, хороший пример того, чем может быть опасно неопределенное поведение. Попробуем скомпилировать вашу программу с максимальным уровнем оптимизаций (флаг -O3).
Компилятор GCC хорошо справляется с вашей программой, она работает как и должна:
$ g++ -O3 main.cpp -o main
$ ./main
Guess a number from 0 to 9:А вот другой компилятор, Clang, компилирует неработающую версию:
$ clang++ -O3 main.cpp -o main
$ ./main
Segmentation fault (core dumped)При этом поведение Clang-а абсолютно нормально.
Вот ссылка, где можно посмотреть дизассемблированный код, собранный Clang-ом: https://godbolt.org/z/x4h7rrzxf. Предлагаю вам посмотреть на ассемблер (если умеете чего читать) и попытаться понять, какие решения принял компилятор и чем это закончилось для вашей программы.
| int main() | ||
| { | ||
| srand(time(0)); | ||
| int random = rand() % 10; |
There was a problem hiding this comment.
Эту переменную лучше сделать константной.
| { | ||
| srand(time(0)); | ||
| int random = rand() % 10; | ||
| int number; |
There was a problem hiding this comment.
Для random и number я бы выбрал беззнаковый тип. В условии задачи сказано, что валидацию ввода делать не надо, поэтому мы можем сразу рассчитывать, что пользователь введет число от 0 до 9
| std::cout << "Guess a number from 0 to 9: "; | ||
| std::cin >> number; | ||
|
|
||
| number == random |
There was a problem hiding this comment.
Сравнение дублируется. Можно организовать цикл более элегантно, без повторения условий.
|
Задание принято. PR вливать не нужно. |
No description provided.