社区
C语言
帖子详情
++问题
whirl
2003-08-19 12:43:28
a++ = b++;
编译过不了而 ++a = b++;则行,为什么?
...全文
20
16
打赏
收藏
++问题
a++ = b++; 编译过不了而 ++a = b++;则行,为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cdxiaogan
2003-08-20
打赏
举报
回复
up
ppm07
2003-08-20
打赏
举报
回复
to plainsong:
小弟认为作为一个类的设计者,所重载的类的所有操作符都应该符合基本类型的操作规则,即基本类型能通得过的表达式换成类的表达式也应该能通得过,反之亦然。
dofty
2003-08-19
打赏
举报
回复
a++先将a的值保存,再将a的值加1,返回保存的a值,所以不可赋值
++a将a的值加1,然后返回a的引用,所以可以赋值
sandrowjw
2003-08-19
打赏
举报
回复
a++返回的不是l-value,应该是一个临时变量吧。
oopig
2003-08-19
打赏
举报
回复
这个问题很好,up一下。
frank026
2003-08-19
打赏
举报
回复
我同意plainsong的说法,因为a++返回的是一个值,而不是变量,所以不能赋值,他不是l_value,而++a返回的是变量a(自增后),他有地址,所以可以赋值
短歌如风
2003-08-19
打赏
举报
回复
dofty所说的是对的,正是因为dofty所说的原因,才导致sandrowjw所说的结果。不过都只适用于基本类型,因为class的operator的返回值是由编写者决定的(除类型转换操作符外)。
dofty
2003-08-19
打赏
举报
回复
我所说的和sandrowjw(伊卡洛斯) 并不相左返回的类型不同也就决定了它是不是l-value
sandrowjw
2003-08-19
打赏
举报
回复
哦,是这样,是我没仔细想。
亮剑_
2003-08-19
打赏
举报
回复
a++不是左值,而++a则是
ppm07
2003-08-19
打赏
举报
回复
public:
int a;
A& operator++()
{ return ++a,*this; }
const A operator++(int)
{ return ++a,*this; }
};
这样改的话就和int一致了。都通不过编译。
jack_wq
2003-08-19
打赏
举报
回复
为什么一定要这么做,费力不讨好!
紫郢剑侠
2003-08-19
打赏
举报
回复
确实有意思...
sandrowjw
2003-08-19
打赏
举报
回复
很有趣,请看下面的代码:
class A
{
public:
int a;
A& operator++()
{ return ++a,*this; }
A operator++(int)
{ return ++a,*this; }
};
然后
A a;
a.a = 0;
A& b = a++;//如果把A改成int则不行
cout<<b.a<<endl;
输出的是1,系统的确给b分配了空间,而且它的地址就在a的后面,可以加一个copy构造函数,会发现它被调用了两次。但是对于int则没有这种设定,我是在vc下面试的,看来该回去查查看这是不是符合C++规范。
maomaomaomao
2003-08-19
打赏
举报
回复
a++是先取出a的值再将值自增,而++a是将a自增后再放回原地址
made_in_
2003-08-19
打赏
举报
回复
dofty(dofty)所说的理由并不成立.sandrowjw(伊卡洛斯)是对的.
a++返回的不是一个l-value,所以无法给其赋值.
++a返回的则是一个可以赋值的l-value.
C&C
++
语言学习大全套【精品】
2012-C&C
++
语言大全.zip C&C
++
语言教程大礼包.rar C_C
++
+指针的13份资料.zip C_C
++
程序员实用大全.zip C
++
程序设计语言特别版(中文版) .rar C语言大全第4版+源码.rar C语言阶梯式教程【从白痴到资深专家】 .pdf 你必须知道的495个C语言
问题
(完整版).rar
多线程 i
++
问题
1,在多线程中我们知道一个
问题
就是i
++
操作时,我们得到的结果和我们想象的结果不一样,因为i
++
操作会被分成三步。分别是取值,
++
操作,赋值(读,改,写)。当线程执行到取值或者
++
操作时,线程突然切换,所以最终得到的结果可能有些奇怪!看看下面程序 创建是个线程对i进行
++
操作 public class AtomicTest { public static void main(String[] a...
用VB6+GDI+开发交互式CAD系统
建议先自行对源码进行阅读分析,然后带着
问题
去听课,这样学习效率比较高,效果比较好一些。 课程最终提供的内容和服务: PPT+源码+视频讲解+持续升级 /****课程第一节课为免费课,演示了系统的主要功能。可以用手机...
Java 中的 i = i
++
问题
Java 中的 i = i
++
问题
今天实验室几个 Java 技术栈的小伙伴在讨论
问题
,感觉他们在讨论一个很简单但又很有意思的
问题
。想到我最近也要用 Java,于是过去看了一下。没想到他们居然像 C/C
++
程序员一样在讨论 i
++
的
问题
。看来 Java 程序员也不能免俗。而且《Java 程序员面试笔试宝典》也提到了这个
问题
。网上也可以搜到好多结果。看来这个
问题
很重要,虽然是个无聊的
问题
,但说不定
深刻理解经典
问题
:i
++
与
++
i
一、printf函数参数顺序
问题
。 1、printf函数的参数的执行顺序
问题
:我们经常使用printf函数,由于本次实验是在linux下的gcc编译环境下进行,所以对于printf函数的参数,其结果也只使用与当前环境。可先观察例子: int i = 1; printf("i
++
= %d, i
++
= %d, i
++
= %d\n",i
++
, i
++
, i
++
); 运行结果为: ...
C语言
69,336
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章