Программа
x.c
:#include <stdio.h>
int main() {
char s[4];
s[0] = 'C'; s[1] = s[2] = '+'; s[3] = 0;
s[sizeof(' ') ^ 5] = 0;
printf("%s\n", s);
return 0;
}
Компилируем и запускаем.Visual Studio:
cl x.c && x
или в Cygwin:gcc -o x x.c && x
Имеем следующий результат:C
А теперь так:cl /TP x.c && x
или в Cygwin:g++ -o x x.c && x
Теперь программа печает иное:C++
Результат повеселил некоторых моих коллег.Нашел небольшой список еще некоторых "отличий" С и С++, но, пожалуй, этот самый неявный, а значит потенциально опасный.