computer 版 (精华区)

发信人: remember (Learning C++), 信区: program
标  题: 关于 C++自测题(3)
发信站: 听涛站 (2001年10月06日12:14:25 星期六), 站内信件


(3)About operator ++

> #include <iostream.h>
> int main()
> {
>    int data[]={1,10,100};
>    int *i=data;
>    cout<<*i<<endl;
     这句输出1,大家没有意见吧~~
>    cout<<++*i<<endl;
     这句输出2,*i取得i指向的地址的内容(dereference),
     执行++运算符后输出;此时data[]为 2,10,100;
>    cout<<*i++<<endl;
     这句输出依然为2,想来也正常,++运算符后置,输出时还没进行++操作;
     *i提出data[0]的内容;
>    cout<<*i<<endl;
     意外的,至少当时是出乎我意外的,这句输出10;
     这表明了前一句的++运算符作用在i上,而非*i即data[0]上;
     尽管*号运算符(dereference操作)的优先级在++之前,
     但大概后置的++运算符因其解释时间而只对i产生作用;
>    return 0;
> }

     看来多加个把括号是个不差的习惯,至少在提高程序可读性的同时
 减少了一些意外的出现概率。当然,似乎C++的高手、大师们只在必要的
 时候加括号,以提高程序效率(也许而已,其实我认为编译后结果是一
 样的),不过我们在没成为高手前,还是多加括号的好~~~

--
    洛阳亲友如相问  一片冰心在玉壶
※ 来源:·听涛站 tingtao.dhs.org·[FROM: 匿名天使的家] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:0.807毫秒