注册 登录
编程论坛 C++教室

这样都不报错!!!太牛了!

MyStar 发布于 2010-07-30 10:07, 971 次点击
#include <iostream>
using namespace std;
int main()
{
    int num[5];
    int sum=0;

    for(int i=0;i<5;i++)
    {
        cout<<"Enter element "<<i<<":";
        cin>>i[num];
    }
    for(int j=0;j<5;j++)
           sum=sum+j[num];
cout<<"The resulting sum is :"<<sum<<endl;

return 0;
}
红色带下划线字体太牛了,编译时居然没报它错!!!请大家帮忙解释一下呗!!!谢谢啦!!
15 回复
#2
xxlovemf2010-07-30 10:36
楼主 你真牛 俺是头一次见
#3
pangding2010-07-30 13:03
没語法问题就不报错,最多也只能是警告一下。这种语句只有人看着比较诡异……

再说本来它就有可能是一样的。如果你把 a[i] 看成 *(a+i) 是不是 a 和 i 的位置可以互换。
#4
gq1987182010-07-30 13:18
楼主很有创意啊
#5
东海一鱼2010-07-30 13:39
只是写法的问题,会生成同样的代码(都是栈指针 + 常量方式)。
#6
yzhu2010-07-30 13:58
没违反TC的规则啊!
 
#7
lampeter1232010-07-31 08:29
只是写法不同,内部代码是一样的,所以没有错误和警告
#8
zgxyz20082010-07-31 09:21
这样写是允许的......
#9
xxlovemf2010-07-31 12:27
楼主好好看看c与指针
这样写完全没有错误
它把i和j当做了数值 而不是数组
#10
tianxiao1102010-07-31 17:15
有的编译器自己在编译的时候,就自动把你那种格式给清除了。代码不会出错。
#11
MyStar2010-07-31 18:06
回复 3楼 pangding
呵呵,连警告都不报!!!呵呵,运行非常完美,不是吗?这是因为加法是可交换的!!!
#12
MyStar2010-07-31 18:07
回复 4楼 gq198718
呵呵
#13
MyStar2010-07-31 18:14
回复 10楼 tianxiao110
呵呵,这个可不是啊,那样写可不是俺的格式特殊,主要是和“[]”运算符有关!!!
#14
dream_one2010-08-01 08:22
我用gcc试过了,的确运行正常。
我认同这种说法:a[i] 看成 *(a+i) , a 和 i 的位置可以互换。
#15
MyStar2010-08-01 09:41
回复 14楼 dream_one
呵呵,回答的完全正确!!!
#16
liveningning2010-08-03 11:04
呵呵
写错一个单词甚至字母就会报错的。。。
1