Wednesday, October 17, 2012

Задача в стиле С

Один коллега, в прошлом С/C++, а ныне C#, выслал интересный пример кода, с вопросом: что будет если компилить под gcc. Я не удержался и ввязался в спор. Эх, молодо-зелено.

#include "stdio.h"
int main()
{
  int a[10] = {0};
  a[5] = 7;
  printf( "%d\n", 5[a] );
  return 0;
}

Мысленный поток:
массив 10 интовых элементов инициализируем 0;
6ой элемент инициализируем 7;
какая-то массакра... Не должно компильнуться;

В слух:
Не компильнёт 5[a]!

Мысленный поток:
ведь не компильнёт же!

Коллега:
В таком случае пройди по линке и убедись что всё компильнётся.

В слух:
Ок... Это значит, что 5[a] == *(a+5). Но где это можно использовать?

Коллега:
В диверсионной деятельности...

http://ideone.com/g6spD