请问个C语言的有关问题

请教个C语言的问题
C/C++ code

int LEFT(int i)
{
    return 2i+1; // 这里本来是 2*i+1 ,被我误写成了2i+1; gcc编译通过了,求个解释。
                 //以为是跟ul 整数的后缀,没找到后缀是i的整数。
}



C/C++ code

#include <stdio.h>

int LEFT(int i)
{
    return 2i+1;
}
int main()

{
    printf("%d\n",LEFT(49));
}
[root@localhost soft]# gcc left.c 
[root@localhost soft]# ./a.out 
1
[root@localhost soft]# 



------解决方案--------------------
探讨

引用:

没啥好说的,这是gcc的bug。


++

------解决方案--------------------
#include <stdio.h>
#include <stdlib.h>
#include <complex.h> 
_Complex func1(int i)
{
return 2*i+1; //i是形参变量,表达式的值仅是实部,返回值的虚部为0

_Complex func2(int i)
{
return 2i+1; //不必包含<complex.h>,i是虚部常量的后缀,1是实部常量 

_Complex func3(int i)
{
return 2*I+1;//必须包含<complex.h>,I是在那里定义的,表示虚部

int main(int argc, char *argv[])
{
printf("(%f,%f)\n ",func1(11)); 
printf("(%f,%f)\n ",func2(11)); 
printf("(%f,%f)\n ",func3(11)); 
system("PAUSE");
return 0;
}
==================================
结果是
(23.0, 0.0)
(1.0, 2.0)
(1.0, 2.0)