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

0 голосов
57 просмотров

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


Информатика (85 баллов) | 57 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

#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.

(142k баллов)
0

Я сделал там так #include
main() {
int n;

freopen("input.txt","1",stdin);
freopen("output.txt","1",stdout);

scanf("%d", &n);
printf("%d", n);
}

0

Ответил в ЛС

0

Чтоб в лс общатся мне задания надо делать а чтоб начать чат ты мож написать мне в лс и тогда я смогу писать тебе вроде)

0

Я написал в ЛС, но он ЛС доступно только с ПК, с мобилок нет.

0

Ну почему то я с другими могу с моб

0

ЛС с мобильных не работает, клиент не показывает

0

А общаться тут не по задаче - спам. freopen("input.txt","r",stdin); freopen("output.txt","w",stdout);

0

В данный момент у меня нет возможности сесть на пк вы есть в соц. сети?

0

Нет

0

Печаль

0 голосов

У меня вывело 75...))

(735 баллов)
0

Какой у тебя компилятор?