Сколько оперативной памяти должен занимать тип type, чтобы в
результате следующего фрагмента кода переменная c хранила –32767?
type a = 32767;
type b = 1;
type c = 1;
c = a + b;
Поясните пж, не совсем вникаю
PHP
Типы данных, сколько нужно озу
Ни сколько!!!! всего 2 байта!!!!
если ты используешь тип short или че там которая 32767 все числа введеные в этом типе будут всего занимать 2 байта.
и если ты используешь тип
short c = 32767 + 2 будет с = -32768 и будет весить 2 байта.
просто когда превышаешь максимальное число типа данных он уже идет с самого начала или с конца - с -.
все что ты вводишь в типе short будет занимать всего 2 байта не больше.
если ты используешь тип short или че там которая 32767 все числа введеные в этом типе будут всего занимать 2 байта.
и если ты используешь тип
short c = 32767 + 2 будет с = -32768 и будет весить 2 байта.
просто когда превышаешь максимальное число типа данных он уже идет с самого начала или с конца - с -.
все что ты вводишь в типе short будет занимать всего 2 байта не больше.
Сергей Величко
спасибо, доходчиво объяснили)
Имеется ввиду переполнение, когда после самого большого числа идёт самое маленькое отрицательное.
Такое задание не имеет конкретного решения.
В языке С++ не существует фундаментальных или стандартных библиотечных типов, которые давали бы результат -32767 при применении бинарного оператора + к объектам, хранящим значения 32767 и 1.
Если же речь идет о некоем нестандартном типе, то ответ может быть практически любым.
В языке С++ знаковое переполнение вызывает неопределенное поведение. То есть сумма двух положительных целых значений не может дать отрицательное значение, за исключением небольшой лазейки: если "переполнение" происходит не во время суммирования, а во время преобразования типов (от более широкого знакового целого к более узкому), то поведение не является неопределенным, а является определяемым реализацией.
Таким образом, в рамках некоторой реализации, если type - это некий знаковый тип, более узкий , чем int, в диапазон которого не входит значение 32768, но при этом 32768 входит в диапазон типа int, то операнды в выражении a + b будет подвергнуты integral promotions до типа int, выражение будет вычислено в рамках типа int (без переполнения) и затем преобразовано обратно к type. При обратном преобразовании произойдет "переполнение" с результатом, определяемым реализацией. Теоретически, в какой-то реализации может получиться и -32767, в какой-то - 12345, в какой-то - еще что-нибудь...
Но это все выходит далеко за рамки вопроса о том, сколько памяти должен занимать тип type.
Это и была фишка задания - узнать у человека читал ли он стандарт.
В языке С++ не существует фундаментальных или стандартных библиотечных типов, которые давали бы результат -32767 при применении бинарного оператора + к объектам, хранящим значения 32767 и 1.
Если же речь идет о некоем нестандартном типе, то ответ может быть практически любым.
В языке С++ знаковое переполнение вызывает неопределенное поведение. То есть сумма двух положительных целых значений не может дать отрицательное значение, за исключением небольшой лазейки: если "переполнение" происходит не во время суммирования, а во время преобразования типов (от более широкого знакового целого к более узкому), то поведение не является неопределенным, а является определяемым реализацией.
Таким образом, в рамках некоторой реализации, если type - это некий знаковый тип, более узкий , чем int, в диапазон которого не входит значение 32768, но при этом 32768 входит в диапазон типа int, то операнды в выражении a + b будет подвергнуты integral promotions до типа int, выражение будет вычислено в рамках типа int (без переполнения) и затем преобразовано обратно к type. При обратном преобразовании произойдет "переполнение" с результатом, определяемым реализацией. Теоретически, в какой-то реализации может получиться и -32767, в какой-то - 12345, в какой-то - еще что-нибудь...
Но это все выходит далеко за рамки вопроса о том, сколько памяти должен занимать тип type.
Это и была фишка задания - узнать у человека читал ли он стандарт.
Похожие вопросы
- Почему говорят про глобальный массив $GLOBALS в то же время данные передают через сессии?
- На php нужно написать универсальное условие для фильтрации данных
- Нужна помощь c запросами и базой данных, PHP, MySQL
- Как проще, лучше и быстрее из бд получить данные и поместить сразу в переменную или поместить в цикл и оттуда извлекать
- Программисты, сколько вам нужно времени чтобы написать такой алгоритм:
- вывод данных из базы данных по нажатию кнопки
- Отправка текста в базу данных PHP + MySQL! Помогите ((
- как сделать чтобы полученные из формы данные записывались в базу данных?
- PHP не видит данных POST запроса
- PHP mysqli bind типы... ошибка 500