Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kalonord
26 / 26 / 3
Регистрация: 27.01.2014
Сообщений: 767
#1

Возведение числа типа int в степень - C++

02.09.2015, 01:20. Просмотров 459. Ответов 11
Метки нет (Все метки)

Здравствуйте.

C++
1
2
3
4
5
6
7
8
int n = 2;
    int x = 2;
 
    while (n)
    {
        n = x * n;
        cout << n << endl;
    }
Вывод в консоль:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
1073741824
- 2147483648
0
Как вообще вылезло значение - 2147483648?
В конце, ноль это я так понимаю, что больше переменная хранить не может и поэтому выводится ноль(догадка). Но откуда это значение с отрицательным знаком?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Ivana
3041 / 1728 / 150
Регистрация: 01.03.2013
Сообщений: 4,906
Записей в блоге: 2
02.09.2015, 01:24     Возведение числа типа int в степень #2
Да, в АВР-студии для микроконтроллеров на чистом Си у меня такого не было Это все Майкрософт и корпорации довели до такого положения вещей....
kalonord
26 / 26 / 3
Регистрация: 27.01.2014
Сообщений: 767
02.09.2015, 01:25  [ТС]     Возведение числа типа int в степень #3
Цитата Сообщение от _Ivana Посмотреть сообщение
Это все Майкрософт и корпорации довели до такого положения вещей....
А с чем это связано, это как-то объясняется?
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,013
Записей в блоге: 1
02.09.2015, 01:35     Возведение числа типа int в степень #4
Объясняется вашей неграмотностью . Изучайте, что такое "целый тип" и "целый тип без знака".
_Ivana
3041 / 1728 / 150
Регистрация: 01.03.2013
Сообщений: 4,906
Записей в блоге: 2
02.09.2015, 01:36     Возведение числа типа int в степень #5
Заговор. Чтобы код, правильно компилирующийся и работающий в МС Студии, давал ошибки у конкурентов.
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,013
Записей в блоге: 1
02.09.2015, 01:37     Возведение числа типа int в степень #6
Для простоты рассмотрите случай, когда для хранения целого используется не 32 бита, а только 4 (или 3).
_Ivana
3041 / 1728 / 150
Регистрация: 01.03.2013
Сообщений: 4,906
Записей в блоге: 2
02.09.2015, 01:38     Возведение числа типа int в степень #7
Да, с Char такая же ерунда.
kalonord
26 / 26 / 3
Регистрация: 27.01.2014
Сообщений: 767
02.09.2015, 01:42  [ТС]     Возведение числа типа int в степень #8
Цитата Сообщение от zer0mail Посмотреть сообщение
Объясняется вашей неграмотностью . Изучайте, что такое "целый тип" и "целый тип без знака".
Окей, выходит, что вывод абсолютно нормален. Тогда к чему было это:
Цитата Сообщение от _Ivana Посмотреть сообщение
Да, в АВР-студии для микроконтроллеров на чистом Си у меня такого не было Это все Майкрософт и корпорации довели до такого положения вещей...

Не по теме:

Я просто сделал задание по книге. И там вопрос: что случилось когда вы выполнили эту программу? Вот мне и интересно почему так.

_Ivana
3041 / 1728 / 150
Регистрация: 01.03.2013
Сообщений: 4,906
Записей в блоге: 2
02.09.2015, 01:45     Возведение числа типа int в степень #9
Цитата Сообщение от kalonord Посмотреть сообщение
Тогда к чему было это:
К тому, что там бы результат был другим.
kalonord
26 / 26 / 3
Регистрация: 27.01.2014
Сообщений: 767
02.09.2015, 01:48  [ТС]     Возведение числа типа int в степень #10
Цитата Сообщение от _Ivana Посмотреть сообщение
К тому, что там бы результат был другим.
Я это понял. Ладно, буду разбираться.
Renji
1876 / 1274 / 290
Регистрация: 05.06.2014
Сообщений: 3,634
02.09.2015, 03:28     Возведение числа типа int в степень #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от kalonord Посмотреть сообщение
Как вообще вылезло значение - 2147483648?
Арифметическое переполнение. Подробнее - изучать двоичное представление числа со знаком.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2015, 09:44     Возведение числа типа int в степень
Еще ссылки по теме:
C++ Возведение отрицательного числа в степень
Возведение в степень вводимого числа C++
Рекурсия, возведение числа в степень C++
Возведение дробного числа в степень C++
Возведение числа в целую степень C++

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
02.09.2015, 09:44     Возведение числа типа int в степень #12
Цитата Сообщение от _Ivana Посмотреть сообщение
Это все Майкрософт и корпорации довели до такого положения вещей....
Цитата Сообщение от kalonord Посмотреть сообщение
А с чем это связано, это как-то объясняется?
Страуструп пишет, что проверка на переполнение стандартом не предусмотрена, и что будет при переполнении - тоже, но, как правило, при переполнении знакового значение становится отрицательным. Гарантируется, что исключения в случае переполнения не генерируются.
Yandex
Объявления
02.09.2015, 09:44     Возведение числа типа int в степень
Ответ Создать тему
Опции темы

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