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毫秒