1. Character Sets
The token respelling and trigraphs in Standard C are part of the C++ Standard, but they are not common in pre-Standard C++ implementations. Boths C and C++ allow universal character names with same syntax, but only C explicitly allows other implementation-defined character in identifiers. (One expects that C++ implementations will provide them as an extension.)
2. Comments
C99 comments are acceptable as C++ and vice versa. Before C99, the characters // did not introduce a comment in Standard C, and so the sequence of character //* in C could be interpreted differently in C++.
3. Operators
There are three new compound operators in C++:
.* ->* ::
Since these combinations of tokens would be invalid in Standard C programs, there is no impact on portability from C to C++.
4. Identifiers and Keywords
The identiofiers listed in latter are keywords in C++, but not in C. However, the keyword wchar_t is reserved in Standard C, and the keywords bool, true and false are reserved in C99 as part of the standard libraries.
asm export private throw
bool false protected true
catch friends public try
class mutable reinterpret_case typeid
const_cast namespace static_cast typename
delete new template using
dynamic_cast operator this virtual
explicit wchar_t
5. Character Constants
Single-character constants have type int in C, but have type in C++. Multicharacter constants-which are implementation-defined--have type int in both languages. In practice, this makes little difference since in C++ character constants used in integral contexts are promoted to int under the usual conversions. However, sizeof('C') is sizeof(char) in C++, whereas it is sizeof(int) in C.