Блог пользователя Reyiz

Автор Reyiz, 10 лет назад, По-английски

Output of the following code is:

3
2 2 5

I couldn't understand why ((*p)++)+(++(*p)) won't increase a[0] twice. Please help.

Thanks in advance.

#include <cstdio>
int a[2]={1,5};
int main()
{
  int *p;
  p=a;
  printf("%d\n",((*p)++)+(++(*p)));
  printf("%d %d %d\n",*p,a[0],a[1]);
  return 0;
}
  • Проголосовать: нравится
  • -18
  • Проголосовать: не нравится

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Microsoft Visual C++ 2010:

4

3 3 5

Which compiler do you use?

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

i'm also getting the same output as Reyiz.
my compiler is g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

»
10 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

Undefined operation. Do not use more than one "++" in a sentence.

»
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

It is undefined behavior.

»
10 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

take a look at here