70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
||||||||||||||||
1 | ||||||||||||||||
Типы данных в С++24.03.2019, 23:44. Показов 1158. Ответов 19
Метки нет (Все метки)
Здравствуйте,
Позвольте задать несколько наверное простых вопросов, в которых что то запутался: 1)
2)А тут я вообще запутался! double d = 1.01; double s1 = 9999999999999998.01; double s2 = 99999.0123; double s = 12.0123456789; Выводится следующее:
-второе вообще не могу понять, что за формат, как его прочитать и нормально ли что в таком формате выводиться ? -в третьем почему то не вывелись числа после запятой. Хотя если преобразовать в string и вывести на консоль, то число в виде строки выводится полностью. -в четвертом вывелись, но не все. Хотя если число 12.0123456789 преобразовать в string, а потом вывести, то чисел после запятой уже больше - 12.0123456. С этим double ничего не понятно.
0
|
24.03.2019, 23:44 | |
Ответы с готовыми решениями:
19
Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си? Какой формат базы данных DSN Access (атрибуты и типы данных)? Типы данных: чем отличается тип данных int от float? Типы данных, которые можно использовать в предложении foreach в качестве поставщика данных |
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
||||||
25.03.2019, 00:20 | 2 | |||||
Почему бы и нет. Зависит только не от IDE, а от реализации, можно сказать от компилятора. Для целых типов есть соотношения их размеров:
1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long) .1е+16 - научная запись.Почитайте теорию и поэкспериментируйте с точностью:
0
|
nonedark2008
|
25.03.2019, 00:24
#3
|
Не по теме: del
0
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
25.03.2019, 00:39 | 4 |
0
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
||||||
25.03.2019, 05:27 | 5 | |||||
Optimus11, 276447230 - не максимальное для int. int - 4 байта, максимальное значение 231-1=2147483647. не совсем понятно, зачем Вы переполняете int, вводя 99999999999998. запустите такую программу:
0
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
||||||
25.03.2019, 11:15 [ТС] | 6 | |||||
Но почему тогда при присвоении int b = 99999999999998; - выводится или заносится число 276 447 230, а не максимальное 2 147 483 647 ?
0
|
"C with Classes"
|
||||||
25.03.2019, 11:34 | 7 | |||||
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
25.03.2019, 11:55 | 8 |
Насколько я помню, переполнение знаковых - UB и выводиться там может что угодно, хоть inf.
Обычно же знаковые и беззнаковые ведут себя одинаково и при пересечении верхней границы продолжают счет снизу. Иначе говоря, старшие биты, которые не влезли в переменную, просто отбрасываются. Само число можно записать в шестнадцатеричной системе (она лучше подходит для счета битов): 99999999999998 = 0x00 00 5A F3`10 7A 3F FE Предположим, у вас четырехбайтный int. Тогда все, что вышло за пределы младших 4 байт, будет отброшено: 0x10 7A 3F FE -> 276`447`230 Если у вас 64-битный int (как на современных системах), то число влезет целиком Если у вас 16-битный int (как на некоторых микроконтроллерах), то останется только 2 байта: 0x3F FE -> 16`382 . Но, повторюсь: переполнение знаковых чисел - неопределенное поведение, стандартом не регламентировано.
1
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
||||||
25.03.2019, 12:01 [ТС] | 9 | |||||
Тоже самое, при максимуме int в 2 147 483 647, при:
0
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
25.03.2019, 12:03 | 11 |
0
|
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
|
25.03.2019, 12:08 | 13 |
Optimus11, в добавление к посту от COKPOWEHEU, грубо говоря, переполнение есть модуль от максимально возможного значения:
99999999999998 % (2147483647 + 1) = 276447230
0
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
25.03.2019, 12:15 | 14 |
_stanislav, ой, там много всего, я еще сам не разобрался, но походу там ввели так называемый "дополнительный код" для чисел или же "второе дополнение" двоичного числа которое определяется как величина, полученная вычитанием числа из наибольшей степени двух (из 2N для N-битного второго дополнения).
1
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
25.03.2019, 12:50 | 16 |
Ну, удачи, если в двух словах то
вводятся целочисленные типы со знаком и без знака. Биты знака и значения, диапазон представляемых значений задается введением термина «показатель степени». Затем на их основе вводятся «char» и узкие типы символов. Понятие «базовый тип» расширено до «char», что согласуется с использованием wchar_t.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
25.03.2019, 16:39 | 17 |
0
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
25.03.2019, 16:49 | 18 |
А кстати что там в С11?
Кажись там брали что-то от Си (могу ошибаться). http://www.open-std.org/jtc1/s... tml#c-sign Вот весь пропозал http://www.open-std.org/jtc1/s... 236r1.html
0
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
|||||||||||
25.03.2019, 18:51 [ТС] | 19 | ||||||||||
А все таки не понимаю:
0
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|
25.03.2019, 19:39 | 20 |
0
|
25.03.2019, 19:39 | |
25.03.2019, 19:39 | |
Помогаю со студенческими работами здесь
20
Для следующих значений данных определить типы данных Создание базы данных, таблиц, типы данных и триггеры Типы данных С# для передачи данных через TCP Чтение недопустимых данных, динамические массивы, типы данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |