[cfe-users] curly brace position
Gri Msb
gri.msb at gmail.com
Thu Jan 22 05:55:40 PST 2015
Dear colleagues, I have found a strange bit of code that works, but I think
it should not.
#include <stdio.h>
int main ()
{
int iC = 0;
for (iC = 1; iC < 5; iC++) {
switch (iC)
case 1:
{ // Wrong?, but it works fine!.
printf("ONE\n");
break;
case 2:
printf("TWO\n");
break;
default:
printf("NO!\n");
break;
}
}
return 0;
}
The code compiles without any warning using clang 3.4.1 (FreeBSD 10.1) and
"-Wall" "--pedantic". And the execution results are:
ONE
TWO
NO!
NO!
Of course, I have tried the code with the curly brace in its right position:
switch (iC) {
case 1:
And the results are the same.
I have compared the assembly files (.s) and both are the same, disregarding
the curly brace position.
Could anybody explain why both codes work the same way?
I have tried with "Microsoft Visual C 6" and "Microsoft Visual Studio 2010"
with the same results. Also GCC compiles it without any warning (sorry for
the version).
Best Regards,
Germán Marcos.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20150122/405b8e02/attachment.html>
More information about the cfe-users
mailing list