Propose at least five factors that programmers should consider when choosing between data types (such as those used in C and Java for signed and unsigned integers and real numbers) in an application.
Explain when a short integer, a long integer, and a very long integer should be used. Provide a case for each type. Determine which one of the three integer types is the most efficient in memory usage.