В C++ более строгий контроль типов, поэтому, если программа на C полагается
на автоматическое преобразование типов, она не скомпилируется на C++,
где по умолчанию включён строгий контроль типов. Но, кажется, его можно
включить и в C. Но я в C всегда соблюдаю некоторые правила, в частности,
всегда помещаю отдельно объявления функций, поэтому программа на C,
не использующая каких-нибудь его вольностей, скомпилируется и в C++.
Посмотрите это, парагараф "C++ не включает в себя C":
http://ru.wikipedia.org/wiki/C%2B%2BПётр.