Рубрики

Выполнение printf с операторами ++

Рассмотрим ниже программу на C ++ и прогнозируем ее вывод.

printf("%d %d %d", i, ++i, i++);

Вышеуказанное вызывает неопределенное поведение, ссылаясь как на «i», так и на «i ++» в списке аргументов. Не определено, в каком порядке оцениваются аргументы. Разные компиляторы могут выбирать разные заказы. Один компилятор также может выбирать разные заказы в разное время.

Например, ниже три оператора printf также могут вызывать неопределенное поведение.

// Все три оператора printf ()
// в этом случае неопределенное поведение
#include <stdio.h>

  

int main()

{

    volatile int a = 10;

    printf("\n %d %d", a, a++);

  

    a = 10;

    printf("\n %d %d", a++, a);

  

    a = 10;

    printf("\n %d %d %d ", a, a++, ++a);

    return 0;

}

Поэтому не рекомендуется использовать два или более двух операторов до или после приращения в одном выражении.
Это означает, что в этом процессе нет абсолютно никакого временного упорядочения. Аргументы могут быть оценены в любом порядке, а процесс их оценки может быть переплетен любым способом.

Эта статья предоставлена Spoorthi Aman . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

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

Выполнение printf с операторами ++

0.00 (0%) 0 votes