Не компилируется программа - C (СИ) (75689)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#define PR(X) printf("X =%u,*X=%d,&X=%u\n",X,*X,&X)
int main(void)
{
    static int urn[]={100, 200, 300};
    /*unsigned*/ int *ptr1, *ptr2;  
    ptr1 = urn;
    ptr2 = &urn[2];
    /*unsigned int PR;*/
    PR(ptr1);
    ptr1++;
    PR(ptr1);
    PR(ptr2);
    ++ptr2;
    PR(ptr2);
    printf("ptr2 - ptr1 = %u\n", ptr2 - ptr1);
    }
Выбрасывает ошибку компиляции:
pointers.c: In function ‘main’: pointers.c:10: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘int *’ pointers.c:10: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘int **’ pointers.c:12: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘int *’ pointers.c:12: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘int **’ pointers.c:13: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘int *’ pointers.c:13: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘int **’ pointers.c:15: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘int *’ pointers.c:15: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘int **’

Решение задачи: «Не компилируется программа»

textual
Листинг программы
#include <stdio.h>
#define PR(X) printf("X =%p,*X=%d,&X=%p\n",X,*X,&X)
 
int main(void)
{
    static int urn[]={100, 200, 300};
    int *ptr1, *ptr2;
    ptr1 = urn;
    ptr2 = &urn[2];
    /*unsigned int PR;*/
    PR(ptr1);
    ptr1++;
    PR(ptr1);
    PR(ptr2);
    ++ptr2;
    PR(ptr2);
    printf("ptr2 - ptr1 = %d\n", ptr2 - ptr1);
 
    return 0;
}

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки .
  2. Макроопределение PR(X) - вывод информации о переменной X на экран.
  3. Объявление массива urn типа int со статичным динамическим диапазоном на 3 элемента и инициализация его элементов значениями 100, 200, 300.
  4. Объявление двух указателей типа int * на элементы массива urn: ptr1 и ptr2.
  5. Присваивание значения ptr1 элементу urn[0], то есть ptr1 указывает на первый элемент массива urn.
  6. Присваивание значения ptr2 элементу urn[2], то есть ptr2 указывает на третий элемент массива urn.
  7. Вызов функции PR(ptr1) для вывода информации о переменной ptr1.
  8. Инкрементирование значения ptr1 на единицу.
  9. Вызов функции PR(ptr1) для вывода информации о переменной ptr1.
  10. Инкрементирование значения ptr2 на единицу.
  11. Вызов функции PR(ptr2) для вывода информации о переменной ptr2.
  12. Вывод значения ptr2 - ptr1 на экран.
  13. Возврат 0 из функции main.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5
Похожие ответы