Что бы это значило?

Язык Си позволяет создавать выражения, которые не сразу и поймешь.
Знакомый принес с собеседования вот такую задачку:

Что выведет программа?

  int x = 2;
  x += x+++++x; 
  printf( "x=%u\r\n", x );

Ответ:

x = 10

[WpProQuiz 1]

Запись опубликована в рубрике Великий и могучий Си с метками , . Добавьте в закладки постоянную ссылку.

5 комментариев: Что бы это значило?

  1. yl говорит:

    X=10. check your qualification :)

  2. Артём Двинин говорит:

    Спасибо.
    Посыпаю голову пеплом :)

  3. yury говорит:

    А что выведет код:
    int a = 1;
    int *b = a;
    int *c = a;
    int d = (*b+1)/*c;
    printf(«%i\n»);
    /*ответ: ошибку после этого комментария*/

  4. Павел говорит:

    Нет, не 10;
    такая запись не прокатит;
    Либо 8, т.к. записать можно как: x += x++ + ++x;
    либо словите lvalue……..

  5. Александр говорит:

    main.cpp: In function ‘int main()':
    main.cpp:12:11: error: lvalue required as increment operand
    x += x+++++x;
    ^

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>