社区
C语言
帖子详情
请教一个关于左值的问题
winsunII
2003-09-29 04:57:51
int* q = &(x++); //为什么说x++不是一个左值,它不是存储在x里的吗?
...全文
43
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/C++
左值
性精髓(三)
左值
转换 zz from CSDN supermegaboy
C/C++
左值
性精髓 (三)
左值
转换
左值
转换又称为从
左值
到右值的转换。
左值
转换的发生一般基于两个原因: 第一:某些运算符仅要求右值操作数,例如+、-双目运算符,如果给予它们
一个
左值
操作数,这时候就需要把
左值
转换为右值; 第二:某些指示符,例如数组和函数,由于不属于标量类型,即所代表的实体本身不能被视为数值,这些指示符欲参与表达式计算,就必须将其数
[置顶] C/C++
左值
性精髓(三)
左值
转换----从函数到指针的转换
[置顶] C/C++
左值
性精髓(三)
左值
转换----从函数到指针的转换 分类: C/C++
左值
性精髓2011-12-03 22:46 2514人阅读 评论(14) 收藏 举报 functionstructemailc C/C++
左值
性精髓 (三)
左值
转换 3.从函数到指针的转换 将函数转换为指针的目的,与数组到指针的转换一样,都是为了将
关于所谓的
左值
和右值,完全是翻译错误啊!
L-value中的L指的是Location,表示可寻址。The "l" in lvalue can be though of as location R-value中的R指的是Read,表示可读。The "r" in rvalue can be thought of as "read" value.
C/C++
左值
性精髓(三)
左值
转换----从函数到指针的转换
2019独角兽企业重金招聘Python工程师标准>>> ...
c语言合法常量开头为字母和,为什么 0.1e+6是C语言的合法常量,而’cd’不是? 为什么 ch,
请教
几个有关C语言的
问题
: 1、为什么’cd’不能做为C语言...
导航:网站首页 >为什么 0.1e+6是C语言的合法常量,而’cd’不是? 为什么 ch,
请教
几个有关C语言的
问题
: 1、为什么’cd’不能做为C语言为什么 0.1e+6是C语言的合法常量,而'cd'不是? 为什么 char A=65...,
请教
几个有关C语言的
问题
: 1、为什么'cd'不能做为C语言合法常...匿名网友:1 0.1e+6符合float类型的科学计数法定义,是C语言的合法常量...
C语言
69,336
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章