Рубрики

C | Расширенный Указатель | Вопрос 9

#include <stdio.h>
#include <stdlib.h>

  

int main(void)

{

    int i;

    int *ptr = (int *) malloc(5 * sizeof(int));

  

    for (i=0; i<5; i++)

        *(ptr + i) = i;

  

    printf("%d ", *ptr++);

    printf("%d ", (*ptr)++);

    printf("%d ", *ptr);

    printf("%d ", *++ptr);

    printf("%d ", ++*ptr);

}

(A) Ошибка компилятора
(B) 0 1 2 2 3
(С) 0 1 2 3 4
(D) 1 2 3 4 5

Ответ: (Б)
Пояснение: при обращении с такими вопросами следует помнить следующее.

1) Префиксные операторы ++ и * имеют одинаковый приоритет и ассоциативность справа налево.

2) Postfix ++ имеет более высокий приоритет, чем два вышеупомянутых оператора, а ассоциативность слева направо.

Рекомендуемые посты:

C | Расширенный Указатель | Вопрос 9

0.00 (0%) 0 votes