Рубрики

Разница между ++ * p, * p ++ и * ++ p

Прогнозировать выход следующих программ на Си.

// ПРОГРАММА 1
#include <stdio.h>

int main(void)

{

    int arr[] = {10, 20};

    int *p = arr;

    ++*p;

    printf("arr[0] = %d, arr[1] = %d, *p = %d",

                          arr[0], arr[1], *p);

    return 0;

}

// ПРОГРАММА 2
#include <stdio.h>

int main(void)

{

    int arr[] = {10, 20};

    int *p = arr;

    *p++;

    printf("arr[0] = %d, arr[1] = %d, *p = %d",

                          arr[0], arr[1], *p);

    return 0;

}

// ПРОГРАММА 3
#include <stdio.h>

int main(void)

{

    int arr[] = {10, 20};

    int *p = arr;

    *++p;

    printf("arr[0] = %d, arr[1] = %d, *p = %d"

                          arr[0], arr[1], *p);

    return 0;

}

Вывод вышеуказанных программ и всех таких программ можно легко угадать, запомнив следующие простые правила, касающиеся операторов postfix ++, prefix ++ и * (разыменование)
1) Приоритет префикса ++ и * одинаков. Ассоциативность обоих справа налево.
2) Приоритет postfix ++ выше, чем * и префикс ++. Ассоциативность postfix ++ слева направо.

(См .: Таблица приоритетов )

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

Разница между ++ * p, * p ++ и * ++ p

0.00 (0%) 0 votes