Структура цикла, которая увеличивает переменную до тех пор, пока она не переполнится? - PullRequest
0 голосов
/ 19 сентября 2019

Эта проблема для моего введения в класс кодирования состояний C:

Напишите программу, которая определит наибольшее положительное значение, которое ваша машина может получить для каждого из следующих типов данных.(и, таким образом, вы можете выяснить количество битов, используемых для каждого из типов данных).Чтобы найти наибольшее значение, используйте простую структуру цикла, которая увеличивает переменную этого типа данных до тех пор, пока она не переполнится.

Она дает мне указание сделать это с несколькими типами данных, такими как int, char, short int и т. Д.

Я не совсем уверен, что задает вопрос, я просто должен сделать бесконечный цикл, который принимает переменную определенного типа данных, и каждый раз увеличивать ее значениевремя, пока оно не станет настолько большим, что программа сломается ??Или это спрашивает что-то совершенно другое

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

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

Предположим, что мы работаем с двумя битами, поэтому у нас есть эта таблица

00
01
10
11

Это все числовые значения, которые подходят, в двух битах.11 в двоичном виде - это 3 в десятичном виде, если вы увеличите его, вы получите 100, если вы урежете это до менее значимых битов, 00, что равно 0, и это поведение, которое вы ищете.

Я приведу реализацию как упражнение для вас, так как это домашнее задание

0 голосов
/ 19 сентября 2019

шпаргалка для окончательных числовых ответов #include <limits.h>

это заняло намного больше времени, чем я ожидал в моей практике, и присвоение значения 2 ^ (N) - 10 вызывает предупреждение компилятора.

где N - количество доступных битов для хранения числовых частей переменной, и, как показано в примере из @geckos, общим битом 2, 1 для знака минус / позитив, 1 для хранения числовогочасть, максимальное значение со знаком будет 1 = (2 ^ 1 -1)

, поэтому я воспользовался преимуществом limit.h, чтобы сократить время цикла для достижения переполнения

завершить фактическую реализациюхотя сам по себе.

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