Я получаю много противоречивых ответов об этом. Но, как я всегда это понимал.Что происходит, когда вы разыскиваете постинктекс C
Когда у нас есть указатель на C и используйте его в инструкции post increment, приращение сообщения всегда будет происходить после того, как строка кода будет разрешена.
int array[6] = {0,1,2,3,4,5};
int* p = array;
printf("%d", *p++); // This will output 0 then increment pointer to 1
выход:
0
Очень простые вещи. Теперь вот где я получаю немного диссонанса в информации, которую люди рассказывают мне и моему собственному опыту.
// Same code as Before
int array[0] = {0,1,2,3,4,5};
int* p = array;
printf("%d", *(p++)); // Issue with this line
выход:
0
Теперь, когда я бегу, что второй вариант кода Результатом является то, что он будет выводить 0 THEN увеличивает значение указателя. Порядок действий, подразумеваемый скобками, по-видимому, нарушен. Однако некоторые другие ответы на этом сайте говорят мне, что правильная вещь, которая должна произойти, заключается в том, что приращение должно произойти до разыменования. Поэтому, я думаю, мой вопрос заключается в следующем: правильно ли я понимаю? Операторы post increment всегда выполняются в конце строки?
Дополнительная информация:
я компиляции с GCC на Linux Mint с GCC версии 4.8.4 убунту
Я также проверил это на GCC на Debian с версией Debian 4.7.2
_ Порядок операций, подразумеваемых скобками_ - '(' и ')', является скобкой, а не скобками. Я предполагаю, что это то, о чем вы говорите в контексте. Правильная терминология необходима для хорошего общения. – mah
Действительно ли это компиляция без ошибок? Инициализация вашего массива неверна, а ваши косые черты комментариев неверны. – Rob
Я сделал явные исправления к сообщению. Должен ли я также зафиксировать объявление массива? –