(++n) = 10; // 正确 (n++) = 10; // 为什么是错的
++n这个表达式结果是 n的引用 是左值所以可以赋值 n++这个表达式结果是右值 所以不可以赋值
和左右值无关 n++结果是const引用所以不能赋值
preincrement template<class T> T& operator++() { ++*this; return this; } postincrement template<class T> const T operator++(T x) { T temp(x); ++*this; return temp; }
个人觉得不用这么争辩 不同的编译器都是可以对c/c++里面的运算符具体实现做不同的处理的 所以还是要看,标准中对这个运算符的定义为准, 找到ISO的定义吧 ++n无论是自增后再返回自身的, 故此可用于当做左值来使用的环境 即便n可能是自定义的类型的,但是也要假定它对++运算符的重载符合该运算符的标准用法 甚至都不要去考虑它是否是自定义的类型,没有意义的 至于qq群踢人, 版主都是要维护自己的所谓的权威的, 只是把管理的权威等同到技术的权威就过分了
天呐,论坛里都是牛叉,坛主的主题不是吐槽半桶水吗?为什么评论全是技术?
[quote=引用 94 楼 lin5161678 的回复:] [quote=引用 92 楼 走好每一步的回复:]我就是灌水而已,我觉得使用技术去实现价值是比较有意思的事情。 n++,++n当然要懂,但是没必要上升到很高的高度,这种语法的东西。 如果是有歧义,尽量避免这种写法就好了。 如果能够争论如何写出高质量的程序,这不是更有意义吗
[quote=引用 92 楼 走好每一步的回复:]我就是灌水而已,我觉得使用技术去实现价值是比较有意思的事情。 n++,++n当然要懂,但是没必要上升到很高的高度,这种语法的东西。 如果是有歧义,尽量避免这种写法就好了。 如果能够争论如何写出高质量的程序,这不是更有意义吗
[quote=引用 77 楼 lin5161678 的回复:] [quote=引用 76 楼 hzy694358 的回复:] 这种细节性的东西 你没亲自测试 你会知道吗,我本来就是菜鸟 不需要你说,哈哈 但是计较这种有意义?不同的系统 不同的编译器 本来对一些细节的实现就有区别 自己知道就好了,工作上真用不上这种,需要让人去甄别这种区别的代码 也是非常不友好的代码
[quote=引用 76 楼 hzy694358 的回复:] 这种细节性的东西 你没亲自测试 你会知道吗,我本来就是菜鸟 不需要你说,哈哈 但是计较这种有意义?不同的系统 不同的编译器 本来对一些细节的实现就有区别 自己知道就好了,工作上真用不上这种,需要让人去甄别这种区别的代码 也是非常不友好的代码
这种细节性的东西 你没亲自测试 你会知道吗,我本来就是菜鸟 不需要你说,哈哈 但是计较这种有意义?不同的系统 不同的编译器 本来对一些细节的实现就有区别 自己知道就好了,工作上真用不上这种,需要让人去甄别这种区别的代码 也是非常不友好的代码
[quote=引用 71 楼 hzy694358 的回复:] 既然楼主说不一样,那楼主的代码到底是C的呢还是C++的呢, 自己都没说清楚 不是自己打自己的脸?
既然楼主说不一样,那楼主的代码到底是C的呢还是C++的呢, 自己都没说清楚 不是自己打自己的脸?
整天讨论这玩意儿,是不是闲的难受
15,440
社区成员
58,167
社区内容
加载中
试试用AI创作助手写篇文章吧