увеличение и уменьшение переменной в printf
1777 просмотра
1 ответ
Я написал простую программу, где int a = 10
ожидалось, что O / P10 9 9
printf("a++:%d \t a:%d \t --a: %d \n", a++, a, --a);
но O / P, который получается 9 10 10
Я написал другой printf как printf(" a:%d \t --a: %d \n", a, --a);
O / P, который я получил, это 9 9
Кто-нибудь может объяснить мне об этом?
Автор: Manu Источник Размещён: 13.11.2019 11:33Ответы (1)
3 плюса
Решение
Вы испытываете неопределенное поведение , имея несколько выражений с побочными эффектами, без точек последовательности между ними .
Нет никакой гарантии, что аргументы функции порядка будут оценены, поэтому здесь нельзя «ожидать» чего-либо (если вы не написали компилятор).
Автор: unwind Размещён: 16.04.2013 09:34Вопросы из категории :
- c Как вы форматируете unsigned long long int, используя printf?
- c What are the barriers to understanding pointers and what can be done to overcome them?
- c Как реализовать продолжения?
- c Как вы передаете функцию в качестве параметра в C?
- c Как получить список каталогов в C?
- c В чем разница между #include <filename> и #include "filename"?
- c Всегда ли выгодно использовать «goto» в языке, который поддерживает циклы и функции? Если так, то почему?
- c В чем разница между ++ i и i ++?
- c Есть ли разница в производительности между i ++ и ++ i в C?
- c Какой самый лучший бесплатный детектор утечки памяти для программы на C / C ++ и ее подключаемых библиотек DLL?
- c Как разделить два 64-битных числа в ядре Linux?
- c Как определить размер моего массива в C?
- c Как я могу запустить внешнюю программу из C и проанализировать ее вывод?
- c Как вы обнаруживаете / избегаете утечки памяти в вашем (неуправляемом) коде?
- c Как вы устанавливаете, очищаете и переключаете один бит?
- c Преобразование без знака в C - всегда ли это безопасно?
- c Что делает оператор запятой?
- c Как начать потоки в plain C?
- c How to determine CPU and memory consumption from inside a process?
- c Что такое неподписанный символ?