TITLE: Myth - C++ is a superset of ANSI C RESPONSE: bs@research.att.com (Bjarne Stroustrup), 8 Jun 95 Here is the complete claim as found in ``The C++ Programming Language (2nd Edition)'' Addison-Wesley. ISBN 0-201-53992-6. Appendix B, pg 626-627: C++ is based on C (K&R78) and adopts most of the changes specified by the ANSI C standard. Converting programs among C++, K&R C, and ANSI C may be subject to vicissitudes of expression evaluation. All differences between \*C and ANSI C can be diagnosed by a compiler. With the following three exceptions, programs that are both C++ and ANSI C have the same meaning in both languages: In C, sizeof('a') equals sizeof(int); in C++, it equals sizeof(char). In C, given enum e { A }; sizeof(A) equals sizeof(int) ; in C++, it equals sizeof(e), which need not equal sizeof(int). A structure name declared in an inner scope can hide the name of an object, function, enumerator, or type in an outer scope. For example, int x[99]; void f() { struct x { int a; }; sizeof(x); /* size of the array in C */ /* size of the struct in C++ */ } The other quote mentioned in this thread is found of page 6: Knowing C is not a prerequisite for learning C++. Programming in C encourages many techniques and tricks rendered unnecessary by C++ language features. For example, explicit type conversion, ``casting,'' is less frequently needed in C++ than it is in C (see also the ``Note to C programmers'' below). However, *good* C programs tend to be \*C programs. For example, note that every program in Kernighan and Ritchie: The C Programming Language (2nd Edition)[8] is a C++ program. There is also a more detailed discussion of the C/C++ compatibility issues in ``The Design and Evolution of C++'' Addison Wesley, ISBN 0-201-54330-3.