a=(++b,b<<1)什么意思??

花熊 2010-02-27 06:38:37
#include<iostream.h>
int main()
{
int a,b;
b=5;
a=(++b,b<<1);cout<<a<<endl;cout<<b<<endl;
return 0;
}
从没用过a=(?,?)这种表达,求高手指点下!
...全文
912 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
na2650945 2010-03-03
  • 打赏
  • 举报
回复
引用 9 楼 heis07w 的回复:
逗号运算符,从左往右计算,最右边的作为整个表达式的值返回。

这个对的。
然后学习到了b<<1不会改变b的值。
受益。
ypb362148418 2010-03-03
  • 打赏
  • 举报
回复
引用 9 楼 heis07w 的回复:
逗号运算符,从左往右计算,最右边的作为整个表达式的值返回。


就是这样的
gamecreating 2010-03-03
  • 打赏
  • 举报
回复
学习了....

回复内容太短了! 回复内容太短了! 回复内容太短了! 回复内容太短了!
rtygbwwwerr 2010-03-02
  • 打赏
  • 举报
回复
*注意:表达式b<<1 只是返回b左移一位后的结果,并不改变b的值。就好像b+1返回的是b+1后的结果,而并不会改变b本身的值一样。
左移操作符对应的符值操作符是<<= ,执行语句b<<=1才会改变b的值
rtygbwwwerr 2010-03-02
  • 打赏
  • 举报
回复
逗号表达式。
expcomma =(exp1,exp2,...expn)
从左往右计算表达式的值(即按exp1,exp2,...expn的顺序),
返回最后一个表达式的值(即expcomma = expn)
在本例中将依次执行
++b => b == 6
b<<1 => 结果值为 12 ,b == 6
最后返回12
所以结果是:
a=12
b=6
gueangyik 2010-03-01
  • 打赏
  • 举报
回复
b先执行++, b=6
然后左移1位, b=12
再付值给a, a=12
()表示优先级
这个正解
Julykey 2010-03-01
  • 打赏
  • 举报
回复
逗号表达式,先执行左边的语句,再执行右边的语句,整个表达式返回右边的值。
  • 打赏
  • 举报
回复


a=(++b,b < <1) <=>先++b 然后b << 1
huilei_001 2010-03-01
  • 打赏
  • 举报
回复
伙计们,已经把问题解答了.俺就打个酱油
ssdx 2010-03-01
  • 打赏
  • 举报
回复
(b+1)X2 相当于
lh1611 2010-03-01
  • 打赏
  • 举报
回复
逗号运算符,从左往右计算,最右边的作为整个表达式的值返回。
chaoxiaoshuai 2010-03-01
  • 打赏
  • 举报
回复
括号内是一个逗号表达式,对于逗号表达式,先执行左边的语句,再执行右边的语句,整个表达式返回右边的值。就像楼上说的那样。如果不加括号,就相当于(a=++b),b < <1了
醉心编码 2010-03-01
  • 打赏
  • 举报
回复
精解。
引用 1 楼 arthurjava 的回复:
b先执行++, b=6
然后左移1位, b=12
再付值给a,  a=12
()表示优先级
herman~~ 2010-03-01
  • 打赏
  • 举报
回复
引用 1 楼 arthurjava 的回复:
b先执行++, b=6
然后左移1位, b=12
再付值给a,  a=12
()表示优先级


同意
summerYe 2010-03-01
  • 打赏
  • 举报
回复
sfsf ssddsdsddddddddddddddddddddddddddddddd
lixinpeng1007 2010-03-01
  • 打赏
  • 举报
回复
a=(++b,b < <1);
先运算b=b+1,b=6(0110);然后左移一位,b=12;
gyf2001 2010-02-28
  • 打赏
  • 举报
回复
a=(?,?)

是逗号运算符

自左到右执行,返回最右侧的值

a=(++b,b < <1);

1 变量b先自加
2 变量b左移一位,然后把返回值赋值给a


引用楼主 hgy413 的回复:
#include <iostream.h>
int main()
{
int a,b;
b=5;
a=(++b,b < <1);cout < <a < <endl;cout < <b < <endl;
return 0;
}
从没用过a=(?,?)这种表达,求高手指点下!
布拉格曼 2010-02-28
  • 打赏
  • 举报
回复
括号里面是个逗号表达式,逗号表达式的值为最后一个表达式的值,然后把它计算的结果赋值给a
mzlogin 2010-02-28
  • 打赏
  • 举报
回复
学习了……
关于移位运算符,
确实没有理解好。
Crob 2010-02-28
  • 打赏
  • 举报
回复
补充:
a = b<<1;
等于
a = b * 2;

理论上前者比后者执行速度更高效,但为提高程序可读性,如果不是非常追求速度的环境,不建议写成这样。
加载更多回复(15)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧