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

Вам дан следующий код на языке C. int* a = 71; a = a + 1; printf("%d\n", a); Что выведет такая программа?
Гость
Ответ(ы) на вопрос:
Гость
У меня вывело 75...))
Гость
#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.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы