In C++, there is no standard type called "unsigned long double," as it combines an integer type and a floating-point type incorrectly. The maximum sizes for "unsigned long" and "long double" vary based on the specific C++ implementation and compiler used. To determine the maximum sizes, the "limits.h" header file should be referenced, which provides information on the largest values for different data types. The operating system's architecture, whether 32-bit or 64-bit, can influence the sizes of these types but does not change the fundamental definitions. Understanding these distinctions is crucial for proper data type usage in C++.