社区
C语言
帖子详情
请教一个关于左值的问题
winsunII
2003-09-29 04:57:51
int* q = &(x++); //为什么说x++不是一个左值,它不是存储在x里的吗?
...全文
47
13
打赏
收藏
请教一个关于左值的问题
int* q = &(x++); //为什么说x++不是一个左值,它不是存储在x里的吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jinhao
2003-09-29
打赏
举报
回复
int main()
{
int x=10;
int* q =&(++x);
}
用Dev-C++顺利通过编译
winsunII
2003-09-29
打赏
举报
回复
看来我的找个gcc编译一下
TianGuangZao
2003-09-29
打赏
举报
回复
不行。
++i 是左值没错,不过通不过也没办法。
winsunII
2003-09-29
打赏
举报
回复
To: TianGuangZao(天光早)
int *q=&(++x);和int *q=&(x++); 在VC下可通过,在gcc下通不过吗?
winsunII
2003-09-29
打赏
举报
回复
谢谢 Jinhao(辣子鸡丁) ,让人豁然开朗 :)
TianGuangZao
2003-09-29
打赏
举报
回复
不管是 int *q=&(++x); 还是 int *q=&(x++);
gcc 下都通不过,同一个提示:
error: invalid lvalue in unary `&'
x 是什么都没告诉,如果 x 是 int 类型
int x;
int* q = &x;
x++;
不就可以了吗?
Jinhao
2003-09-29
打赏
举报
回复
也许你们不懂的在这里“x++返回一个临时对象”
x++可以看承下面的函数
int addself1(int &x)
{ int a=x;
x=x+1;
return a;
}
所以你用&取回的x++地址其实是那个临时对象的地址,但是临时对象在函数结束时就被销毁了,故这样取得的地址是无意义的
++i 可看先下面的函数
int& addself2(int& x)
{ x=x+1;
return x;
}
这样,函数返回的就是x本身自己,所以你用&取得的地址就是一个有效的地址
RainWindy
2003-09-29
打赏
举报
回复
我也不懂,但可以这样
x++;
int *q = &x;
这样看起来又没有歧义,多好。
Jinhao
2003-09-29
打赏
举报
回复
x++返回一个临时对象
操作符&,去获取这个临时对象的地址
所以不允许
临时对象就是左值
可以改成这样
int *q=&(++x);
aflyinghorse
2003-09-29
打赏
举报
回复
x++不是一个左值
++x才是一个左值
x++x相当于这样:(tmp = x, ++x, tmp)
sky8144843
2003-09-29
打赏
举报
回复
up
winsunII
2003-09-29
打赏
举报
回复
我编译这条语句,编译器报错,error C2102: '&' requires l-value
但int* q = &++x;是正确的,为什么?
tonyzhengjq
2003-09-29
打赏
举报
回复
没听懂你的意思!
C++系列第2:C++2.0(11+14+17+20)详解及多线程实战
(4) 架构与设计模式:需要提升
一个
高度,不再是简单的编码,而是思维模式。 (5) 驱动级别(如果有兴趣,可以深入到驱动级:包括Windows、Linux) (6) 最好学习点Java+Html+javascript等WEB技术。 2.音视频流...
C/C++
左值
性精髓(三)
左值
转换 zz from CSDN supermegaboy
第一:某些运算符仅要求右值操作数,例如+、-双目运算符,如果给予它们
一个
左值
操作数,这时候就需要把
左值
转换为右值; 第二:某些指示符,例如数组和函数,由于不属于标量类型,即所代表的实体本身不能被视为...
[置顶] C/C++
左值
性精髓(三)
左值
转换----从函数到指针的转换
[置顶] C/C++
左值
性精髓(三)
左值
转换----从函数到指针的转换 分类: C/C++
左值
性精髓2011-12-03 22:46 2514人阅读 评论(14) 收藏 举报 functionstructemailc C/C++
左值
性精髓 (三)
左值
...
关于所谓的
左值
和右值,完全是翻译错误啊!
今天碰到了
一个
问题
请教
了一下CSDN的各位大神,大家都提出了
左值
右值的
问题
,以前也接触过,但是不是很深入,今天查找的时候才找到,原来真相是: L-value中的L指的是Location,表示可寻址。The "l" in ...
C/C++
左值
性精髓(三)
左值
转换----从函数到指针的转换
关于C++函数的
左值
性,有
一个
例外,就是非静态成员函数不是
左值
。笔者最初对此感到非常迷惑,因为从抽象本质上说,非静态成员函数并没有不符合C++
左值
涵义之处。笔者曾经向C++的创始人Bjarne Stroustrup博士发了一...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章