The recommended best-practice is to now use separate values for CFBundleShortVersionString and CFBundleVersion
3-component for CFBundleShortVersionString (ex: 4.2.3) A build number for CFBundleVersion
The CFBundleShortVersionString is the version shown on the App Store. The CFBundleVersion will need to change for every build you upload.
CFBundleShortVersionString gives you the version of your app. It's typically incremented each time you publish your app to the App Store. This is the version that is visible on the "Version" section for the App Store page of your application.
CFBundleVersion gives you the build number which is used for development and testing, namely "technical" purposes. The end user is rarely interested in the build number but during the development you may need to know what's being developed and fixed on each build. This is typically incremented on each iteration of internal release. And you can use continuous integration tools like Jenkins to auto-increment the build number on each build.
CFBundleVersion CFBundleShortVersionString