In C++ (and I suspect C) the difference between including using "xxx" and <xxx> is implementation dependent, and only affects the order in which directories are searched for the named header file.
Really? I always read that "xxx" meant to look locally with the source code of the project and <xxx> told the compiler to look in the path specified places.
A preprocessing directive of the form #include <h-char-sequence> new-line
searches a sequence of implementation-defined places for a header identified uniquely by the specified sequence between the < and > delimiters, and causes the replacement of that directive by the entire contents of the header. How the places are specified or the header identified is implementation-defined.
A preprocessing directive of the form # include "q-char-sequence" new-line
causes the replacement of that directive by the entire contents of the source file identified by the specified sequence between the " delimiters. The named source file is searched for in an implementation-defined manner.
Well that is nice, that means every single one of my books are wrong. Only book I've not read yet is The C++ Programming Language Special Edition, but I doubt it makes that mistake.