В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
shpep
shpep
29.06.2022 17:24 •  Информатика

Вам дан следующий код на языке c. int* a = 71; a = a + 1; printf("%d\n", a); что выведет такая программа?

Ответ:
anzhela33
anzhela33
10.07.2020 13:45
#include <stdio.h>

int main(){
int* a = 71;
a = a + 1;
printf("%d\n", a);
}

Да, программа работает и выводит 75.
Компилятор дает предупреждение: warning: initialization makes pointer from integer without a cast [enabled by default]
 int* a = 71;
             ^
В языке С инициализация указателя из целого числа без явного приведения вызывает сообщение о предупреждении.
Его можно обойти, записав int* a = (int*) 71;

Само значение 75 объясняется просто: указатель, имеющий значение 71, при добавлении 1 наращивается не на 1, а на 1, умноженную на длину указателя (4 байта для integer), поскольку именно так реализуется арифметика указателей. 71+4=75.
0,0(0 оценок)
Ответ:
keggen
keggen
10.07.2020 13:45
У меня вывело 75...))
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?