in C++ what is the size of int, long, short double etc
The standard does not specify the size in bytes, but it specifies minimum ranges that various integral types must be able to hold. You can infer minimum size in bytes from it.
Minimum ranges guaranteed by the standard (from “Integer Types In C and C++”):
signed char: -127 to 127 unsigned char: 0 to 255 "plain" char: -127 to 127 or 0 to 255 (depends on default char signedness) signed short: -32767 to 32767 unsigned short: 0 to 65535 signed int: -32767 to 32767 unsigned int: 0 to 65535 signed long: -2147483647 to 2147483647 unsigned long: 0 to 4294967295 signed long long: -9223372036854775807 to 9223372036854775807 unsigned long long: 0 to 18446744073709551615
Actual platform-specific range values are found in in C, or in C++ (or even better, templated std::numeric_limits in header).