Смысл такой, что в массив int S[3] передается значение, как я понимаю, стэка, т.е. каждый из элементов заполнен условным числом -858993460 (число взято из программы, но оно каждый раз разное, неизменным остается то, что оно отрицательное). При умножении на 8 оно становится положительным, аналогично условно, 1717986912. Почему так происходит?
Отслеживать
задан 35 минут назад
15 2 2 бронзовых знака
Потому что результат умножения -6871947680 не влезает в 32-битный int и случается переполнение
32 минуты назад
Результат умножения не влезает в int . Это называется «переполнение». Переполнение знакового числа вызывает неопределенное поведение. Это если не учитывать неопределенное поведение от чтения неинициализированной переменной.
32 минуты назад
такое поведение не стандартизировано, и любой компилятор может вам вернуть любое число.
17 минут назад
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
(-858993460 * 8) mod 2 32 ≡ 1717986912.
Ваше сочетание компилятора и процессора считает целые значения по модулю 2 32 .
Разбор 19 задания ЕГЭ по информатике (Поляков 117), наибольшее значение может иметь переменная S
В стандартном C++ такие вычисления вне закона. Программист обязан следить за тем чтобы промежуточные и окончательные значения в арифметических операциях не приводили к выходу за пределы диапазона int (в вашем случае [-2 31 , 2 31 — 1]). Иначе случается неопределённое поведение. Грубо говоря, нет никаких гарантий относительно поведения программы, если случилось переполнение.
В конкретных реализациях C++ вы можете полагаться особенности компилятора. В данном случае программа вычисляет по модулю. Читайте документацию по конкретному компилятору, проверяйте сгенерированный машинный код (ассемблер).
P.S. Чтение неинициализированной переменной — тоже неопределённое поведение. Иногда вы прочтёте мусор, иногда ноль, иногда программа упадёт или начнёт вести себя непредсказуемо. Проверяйте машинный код или следуйте стандарту.
P.P.S. Следуйте стандарту.
Источник: ru.stackoverflow.com
Какое значение примет переменная s после выполнения программы s 0
August 2022 1 5 Report
Какие значения примут переменные i и S после выполнения программы?
S=0
i=0
While i i=i+1
S=S+i
A)1,2
B) 3,6
C) 1, 1
Д) 3, 9
Answers https://scholar.tips/kakie-znacheniya-primut-peremennye-i-i-s-posle-vypolneniya-programmy-s0-i0-while.html» target=»_blank»]scholar.tips[/mask_link]
<
h2>Определите значение переменной S после выполнения следующих операторов: S:=0; i:=0; while i
Разбор 6 задания ОГЭ по информатике | Пары (s; t) и параметр А
1) S:=0; i:=0; После выполнения этих операторов переменным s и i присваиваются начальные значения равные 0.
3) S:=S+1/i; Подставим в формулу значения переменной i и s , получим: s = 0 + 1/5 = 0.2.
Ответ: S = 0.2
Как добавить хороший ответ?
Что необходимо делать:
- Написать правильный и достоверный ответ;
- Отвечать подробно и ясно, чтобы ответ принес наибольшую пользу;
- Писать грамотно, поскольку ответы без грамматических, орфографических и пунктуационных ошибок лучше воспринимаются.
Что делать не стоит:
- Списывать или копировать что-либо. Высоко ценятся ваши личные, уникальные ответы;
- Писать не по сути. «Я не знаю». «Думай сам». «Это же так просто» — подобные выражения не приносят пользы;
- Писать ответ ПРОПИСНЫМИ БУКВАМИ;
- Материться. Это невежливо и неэтично по отношению к другим пользователям.
Пример вопроса
Русский язык
7 минут назад
Какой синоним к слову «Мореплаватель»?
Пожаловаться
Хороший ответ
Вася Иванов
Мореплаватель — имя существительное, употребляется в мужском роде. К нему может быть несколько синонимов.
1. Моряк. Старый моряк смотрел вдаль, думая о предстоящем опасном путешествии;
2. Аргонавт. На аргонавте были старые потертые штаны, а его рубашка пропиталась запахом моря и соли;
3. Мореход. Опытный мореход знал, что на этом месте погибло уже много кораблей, ведь под водой скрывались острые скалы;
4. Морской волк. Старый морской волк был рад, ведь ему предстояло отчалить в долгое плавание.
Источник: uchi.ru