The two previous tips discussed new features that were added to C99, and which C++ doesn’t support. This time I would like to present one of the changes that were made to C99 in order to bring it closer to C++. C++ allows to you declare variables almost anywhere in a program. For example:
int f(){ int n; cin>>n; int k; // OK, declaration after a code statement cin>>k;}
In C89, however, all declaration within a block must precede the first code statement. They must be grouped at a block’s beginning:
int func(){ int n; scanf("%d",&n); int k; /*illegal in C89, declaration after a code statement*/ scanf("%d",&k);}
This restriction was removed from C99. C now allows you to declare variables after code statements, just as in C++. Thus, the code of func() is well-formed in C++ and C99, but not in C89.