社区
C++ 语言
帖子详情
a=b=c的运算顺序
questionprogfan
2006-02-15 05:23:10
我想问一下a=b=c是如何赋值的,就是赋值和运算的顺序是怎么样的?
谢谢。
int main()
{
int a = 0;
int b = 1;
int c = 2;
a = b = c;
}
现在a,b,c的值都是2,但是是怎么运算的呢?是先a=b然后再把c的值赋给a=b还是怎么样?
...全文
629
9
打赏
收藏
a=b=c的运算顺序
我想问一下a=b=c是如何赋值的,就是赋值和运算的顺序是怎么样的? 谢谢。 int main() { int a = 0; int b = 1; int c = 2; a = b = c; } 现在a,b,c的值都是2,但是是怎么运算的呢?是先a=b然后再把c的值赋给a=b还是怎么样?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zqhpcc
2006-02-16
打赏
举报
回复
看到 a = b = c; 这句语句,应该知道运算结束后三个变量相等,采用右结合是最合理的方式。
Guo14
2006-02-16
打赏
举报
回复
右结合
helanshan
2006-02-16
打赏
举报
回复
赋值运算,当然是右结合。。。
xxxdg
2006-02-16
打赏
举报
回复
不要出现这种语句。
Never!
megaboy
2006-02-15
打赏
举报
回复
别把结合性当做了求值顺序,结合性与求值顺序是两个不同的概念。结合性是当两个优先级相同的运算符共享同一个操作数时,决定该操作数属于哪个运算符的规则。而求值顺序解决的是先计算哪一个操作数的问题。
对于a=b=c;表达式,b是两个赋值运算符的共享操作数,由于赋值运算符的结合性是从右到左的,因此b属于第二个赋值运算符,该表达式等效于a=(b=c);
那么,这个表达式的求值顺序是怎样的呢?赋值运算符的求值顺序是implementation-defined的,是实现相关的,不同的编译器有可能不同,有的可能会先计算a,有的可能会先计算b=c。
laofuxing
2006-02-15
打赏
举报
回复
1. b=c;
2.a=(b=c)'
du51
2006-02-15
打赏
举报
回复
a = b = c;
1.c的值赋给b.
2.在1运算的同时,(b=c)这个式子的值也得出并等于b的值
3.(b=c)这个式子的值赋给a
healer_kx
2006-02-15
打赏
举报
回复
这个东西一般都是从右向左的顺序的,你可以体会一下。
shaoboailinglijun
2006-02-15
打赏
举报
回复
a = b = c;
是c的值赋给b,b的值赋给a,a,b,c的值都是2,右结合。
C语言系列之 二级指针、指针
运算
、堆内存的开辟与释放
尹成老师带你步入 C 语言的殿堂,讲课生动风趣、深入浅出,全套视频内容充实,整个教程以 C 语言为核心,完整精彩的演练了数据结构、算法、设计模式、数据库、大数据高并发检索、文件重定向、多线程同步、进程通讯、黑客劫持技术、网络安全、加密解密,以及各种精彩的小项目等,非常适合大家学习!
C++中 (a=b)=c 的过程分析
C++中 (a = b) = c 的过程分析 #include<iostream> using namespace std; int main() { int a = 1, b = 2, c = 3; (a = b) = c; cout << "a=" << a << " b=" << b << " c=" << c; } 输出结果如下: a=3 b=2 c=3 其中 (a = b)=c; 是不正常的链式赋值(合法
javaScript语法var a=b=c是怎样执行的?
var a=b=c=4; 首先说错误的理解: var a=4,b=4,c=4; 验证: function test(){ var a=b=c=4; } test(); 如果上述理解是正确的,执行完函数test后,在外面是读取不到a,b,c的。 但是在浏览器控制台 所以正确的理解应该是 c=4; b=c; var a=b; var a=b=c=4;会生成全局变量b和c,局部变量a。 总结:平时写代码的时候,如果不需要全局变量,就不要使用连等
运算
,这样容易让人产生歧义而且会引入不必要的全局变量。 ..
c语言基本
运算
符问题 *a++ = *b++
*a++是先执行++
运算
,再执行 *, 即指针先移动一个位置,在对移动后指针所指位置解引用取值。 前置
运算
: 举例:++a=++b; 执行
顺序
是: a=a+1; b=b+1; a=b;后置
运算
: 举例:a++=b++; a=b; a=a+1; b=b+1; 再回到上面的问题:*a++=*b++; 执行
顺序
是: *a; *b; *a=*b; a++; b++; …… while (n-- && (*target2++ = *target1++) != '\0')
赋值语句的返回值 (以return a=b=c==d为例)
#include<stdio.h> int a=0,b=2,c=3,d=3; int puu() { return a=b=c==d; } int main() { int pt; pt=puu(); printf("a=%d b=%d c=%d d=%d pt=%d\n",a,b,c,d,pt); return 0; } 输出 赋值
运算
的
顺序
是...
C++ 语言
64,648
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章