Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
#1

Неправильно выводится максимальное значение - C (СИ)

23.09.2012, 10:09. Просмотров 461. Ответов 5
Метки нет (Все метки)

Мне не понятно, почему мне максимальное значение выводит -1, а минимальное 0, когда максимальное должно быть 4 294 967 295?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main()
{
    //переменная для типов данных
    unsigned int x;
 
//unsigned int
    for(x=0; ;x--) {
        if(x>0) {
        printf("4). unsigned int max: %d", x);
            x++;
        printf(" min: %d", x);
            break;
        }
    }//-------------------------------------------------
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2012, 10:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неправильно выводится максимальное значение (C (СИ)):

Неправильно выводится значение максимального элемента строки - C (СИ)
Подскажите пожалуйста , из за чего не выводит правильно значение максимального элемента строки int main () { int mas; int...

Неправильно выводится массив - C (СИ)
Вчем проблема , не выводится правильно массив ? #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; int _tmain(int argc, _TCHAR* argv)...

Численное решение задачи Коши, результат выводится неправильно - C (СИ)
не понимаю в чем проблема задание было такое Построить алгоритмы численного решения задачи Коши явным, неявным методом ...

Корректно выводится максимальное из чисел массива, но некорректно показывается его индекс - C (СИ)
Номер максимального по модулю элемента массива #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; Int main() { Int...

Цикл не останавливается, значение функции вычисляется неправильно - C (СИ)
Цикл не останавливается и программа не правильно вычисляет значения функции , посмотрите пожалуйста #include &lt;stdio.h&gt; void...

Найти максимальное значение массива - C (СИ)
Нужно найти максимальное значение массива arr почему ругается на переменуую m компилятор? #include &lt;stdlib.h&gt; #include &lt;time.h&gt; ...

5
castaway
Эксперт С++
4888 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
23.09.2012, 10:26 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
%d подразумевает знаковое целое. Попробуй использовать %u или %ul
2
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
23.09.2012, 10:46  [ТС] #3
Цитата Сообщение от lazybiz Посмотреть сообщение
%d подразумевает знаковое целое. Попробуй использовать %u или %ul
Помогло, но всё же не понятно, почему у меня выводилось -1, когда минимальное значение типа unsigned int 0. Вот это мне действительно не понятно. Объясните почему это так
0
castaway
Эксперт С++
4888 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
23.09.2012, 10:49 #4
Там происходит неявное преобразование в тип signed int, получается примерно так: unsigned int a = 0; a--; (a == 4 294 967 295) int b = a; (b == -1)
0
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
23.09.2012, 10:56  [ТС] #5
Цитата Сообщение от lazybiz Посмотреть сообщение
Там происходит неявное преобразование в тип signed int, получается примерно так: unsigned int a = 0; a--; (a == 4 294 967 295) int b = a; (b == -1)
Вот с этого момента поподробнее: int b = a; (b == -1) пожалуйста. Я ведь просто к максимальному значению типа unsigned int прибавил + 1, соответственно переменная принимает самое минимальное значение. Если к примеру использовать вместо unsigned int - unsigned char, то мой код работает превосходно и с %d
0
castaway
Эксперт С++
4888 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
23.09.2012, 11:02 #6
Тебе следует почитать о представлении данных в памяти.
Если представить число 0xffffffff как 32-битное знаковое (тип int), то получится -1.
если представить как 32-битное беззнаковое (тип unsigned int), то будет 4 294 967 295.
0
23.09.2012, 11:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 11:02
Привет! Вот еще темы с ответами:

Найти максимальное значение массива - C (СИ)
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #include &lt;math.h&gt; int vvod(int m, int i, int max); int main() ...

Максимальное и минимальное значение среди чисел - C (СИ)
Помогите с задачками! В программу вводятся произвольные числа. Их количество не имеет значения. Числа запрещается хранить одновременно...

Заменить в массиве максимальное и минимальное значение - C (СИ)
здравствуйте. помогите с программой. ее нужно составить через указатели. дан двумерный массив целых чисел их элементов длиной 4...

Максимальное значение char и размерность массива - C (СИ)
Привет ребята! Только начал разбираться с C, на досуге просматриваю исходные коды на GitHub и часто встречаю код похожий на этот код: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru