2015-08-02 6 views
0

Как проверить граничное условие и распечатать сообщение на языке C? Например, пусть sizeof(int) = 4 байта, как проверить, является ли пользовательское значение ввода более 2^31?Вне граничных условий

+0

где пользовательский ввод значение является строкой? Если да, то что вы используете в настоящее время для синтаксического анализа строки. Показать код. – weston

+0

Prgm получает сумму цифр целого числа. Ввод принимается только как целое, но как поставить проверку, есть ли входное значение за пределами диапазона? – user299520

+1

Вам нужно протестировать ввод пользователей, прежде чем он будет помещен в 'int', после чего вы можете проверить между' 2^31-2^32', но они могли бы ввести большее число. Это также зависит от кода, который вы используете для преобразования от пользователя 'char *' к 'int', поэтому повторяю, покажите код !!! – weston

ответ

-1

Если целочисленное переполнение встречается, то значение суммы становится < 0. Попробуйте этот код:

void checkOverflow() 
{ 
    int sum = 0; 
    int digits = 10000000000;  // one bilion 
    for (int i = 0; i < 10; i++) 
    { 
     sum += digits; 
     if (sum < 0) 
     { 
      printf("Integer overflow - %i", sum); 
      break; 
     } 
    } 

} 
+0

С тех пор, когда C начал иметь конструкцию/метод под названием 'cout' ??? Кроме того, этот код не будет компилироваться, так как вы не возвращаете значение int, тогда как ваша функция определена для возврата int. –

+0

Подписанное целочисленное переполнение имеет неопределенное поведение. Вы не можете проверить это после факта. – melpomene

+0

Простите, я добавлю код, не компилируя его. Добавлены исправления. Но в любом случае у вас есть идея. –

Смежные вопросы