Вопрос по информатике:
Вам дан следующий код на языке C.
int* a = 71;
a = a + 1;
printf("%d\n", a);
Что выведет такая программа?
- 27.03.2018 14:17
- Информатика
- remove_red_eye 2765
- thumb_up 35
Ответы и объяснения 2
#include
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.
- 29.03.2018 16:49
- thumb_up 32
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.