社区
C++ 语言
帖子详情
请问这个表达式为什么成立了?
cutenoob
2006-05-15 01:10:31
int a=3;
a++==++a //为什么成立了?
...全文
172
10
打赏
收藏
请问这个表达式为什么成立了?
int a=3; a++==++a //为什么成立了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
晨星
2006-05-15
打赏
举报
回复
“==”是判断是否相等;
“=”则是赋值;
完全不一样的东西,怎么能这样比较呢。
“=”左边如果允许编译器产生临时变量,那有什么意义呢?赋了值,却连自己都不知道在哪儿。
cutenoob
2006-05-15
打赏
举报
回复
我知道a++==++a 这个表达式比较的是a....
我不理解的是为什么 '= =' 的左边可以有a++ 这种会产生临时变量的表达式 在'=' 左边是不允许的~~
koolfool
2006-05-15
打赏
举报
回复
对于内置类型,编译器一般对递增递减操作符进行了优化
具体做法就是二元运算,类似"=="实参都是传地址
因此右边的++a递增同时,左边的a++的值也递增了
所以这个等式总是成立的
用户定义类型就不是这样了
你感兴趣可以研究一下gcc编译出来的汇编码
dmt9697
2006-05-15
打赏
举报
回复
int a=3;
a++ == ++a //先计算右边,++a后,a为4,右边是后缀++,所以右边现在也是4,只有在这个表达式执行完以后,a才为5.
jenycheng
2006-05-15
打赏
举报
回复
你判断的始终是a
a 在右边加一了, 左边的不是也就是a + 1 后的值了
sankt
2006-05-15
打赏
举报
回复
int a=3;
a++ == ++a //先计算左边,++a后,a为4,右边是后缀++,所以右边现在也是4,只有在这个表达式执行完以后,a才为5.
cutenoob
2006-05-15
打赏
举报
回复
疑问就是为什么 '==' 左边可以有a++这种会产生临时变量的表达式
晨星
2006-05-15
打赏
举报
回复
这个得看不同的编译器吧。
cutenoob
2006-05-15
打赏
举报
回复
自己顶一下..
正则
表达式
中问号(?)的用法详解
正则
表达式
中“?”的用法大概有以下几种 1、直接跟随在子
表达式
后面 这种方式是最常用的用法,具体表示匹配前面的一次或者0次,类似于{0,1},如:abc(d)?可匹配abc和abcd 2、非贪婪匹配 关于贪婪和非贪婪,贪婪...
js语句和
表达式
的关系???
”分隔符,这就被称为“
表达式
语句”。它表明“只有
表达式
,而没有其他语法元素的语句”。 二、两者的功能区别:
表达式
经常用作作为一个函数调用的参数,它可以放在任何需要一个值的地方。而语句则是一个行为,循环...
三元
表达式
怎么算?
int a=1;int b=2;int c= a>b?1:0, 结果c 为0。...使用这个算法可以使调用数据时逐级筛选。 语法为:条件
表达式
?
表达式
1:
表达式
2。 说明:问号前面的位置是判断的条件,判断结果为bool型,为t...
正则
表达式
中问号?的正确用法
=pattern分别表示匹配断言
成立
时左侧和右侧...当我们使用正则
表达式
的时候,捕获的字符串会被缓存起来以供后续使用,具体表现为每个()中的
表达式
所匹配到的内容在进行正则匹配的过程中,都会被缓存下来,如以下代码。
C语言问号
表达式
(
表达式
2):(
表达式
3)如果
表达式
1
成立
则执行
表达式
2,否则执行
表达式
3 举例 int a=5,b=3; printf("%d",a>b;a:b);运行如果a大于b
成立
则执行:前面的即输出a。否则执行:后面的即输出b。本例中输出...
C++ 语言
64,682
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章