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

大家莱试试这两段代码,看看结果是什么,为什么呢?

hlhlf4 发布于 2012-10-08 22:14, 644 次点击
程序代码:
    int i=3;
    int j=3;
    i = pow(++i,2);
    j = pow(j++,2);
    cout<<i<<endl;
    cout<<j<<endl;


程序代码:
    int i = 0;
    int j = 0;
    if (++i)
        i++;
    if (j++)
        j++;
    cout<<i<<endl;
    cout<<j<<endl;
10 回复
#2
寒风中的细雨2012-10-08 23:26
没发现什么问题
#3
rjsp2012-10-09 08:31
第一段代码
++i 会修改 i,i = 也会修改 i,所以……
#4
zhang1977712012-10-09 13:08
if (++i)
    i++;
这段代码在vc6.0中居然编译能通过,结果还是2,非常疑惑!!
#5
hlhlf42012-10-10 02:32
回复 4楼 zhang197771
不应该吗?
#6
zhang1977712012-10-10 12:30
if(++i)为真后,在执行i++,那这个循环不就成死循环了,它怎么可能退出去啊,菜鸟求帮助。
#7
oncoldrain2012-10-11 01:00
if (++i)  先加1再判断,非0都为真啊
    i++;  然后再加1,最后当然就是2了

i++ 完后 if语句都完了 怎么会是死循环  而且if语句也不是循环语句
#8
oncoldrain2012-10-11 01:04
if (j++)  先判断再加1,j开始值 是0,判断为假,所以后面的那个 j++ 是不会执行的 ,最后j=1
    j++;  
#9
a998759842012-10-11 08:31
回复 6楼 zhang197771
这是IF,不是FOR啊,拜托,这个千万要搞清楚啊。这是最基础,也是最重要的两个关键词啊
#10
fxbszj2012-10-11 10:38
回复 6楼 zhang197771
这个不是循环啊,if判断为真后,执行里面的语句,执行后不会再次执行的。循环是for、while等判断
#11
siya2012-10-11 20:24
第一个,使用pow函数,i和j都要是double才行
1