c语言运算顺序,还没有完全弄懂。

zhugay 2015-06-14 03:46:32
int a = 0;
int b = 0;
int c = 0;
//以上为下面每种运算的公用部分,就是说a,b,c都是从等于0 开始的。

1. a = ++b + abs((a = 100, b = 10)) + a;
=120,而b=10:我以为b=11,j结果是121

2.a = (c = 10) + abs((b++, a = 100, c = 1000 )) + (b);
=2001,c=1000:

3. a = (c = 10) + abs((++b, a = 100, c = 1000 )) + (b);
=2001:b++和++b成了一样的结果。

4.a = (c = 10) + (c) + abs((b++, a = 100, c = 1000 )) + (b) ;
=1021

5.a = (c = 10) + abs((b++, a = 100, c = 1000 )) + (b) + (c);
=3001
以上vc6调试观察的。
所以,没有弄懂运算步骤到底是怎样的,运算符的优先级我知道,那这几个例子谁告诉我vc6是怎样一步一步计算的。
比如:1。a = ++b + abs((a = 100, b = 10)) + a;先算括号,后算++,最后+。但++b和b=10哪个先算?
...全文
175 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wojiaomtsa 2015-06-15
  • 打赏
  • 举报
回复
引用 2 楼 zhugay的回复:
今天测试这个搞了一天,刚才又用javaScript测试了一下。怪事情来了。竟然同样的计算题 vc6 和 javaScript的结果还不同。所以,我现在只能说我 对 c语言的运算符还没有完全搞懂。希望有 专家来 解释一下:
http://www.w3school.com.cn/tiy/t.asp?f=jseg_variables (w3c在线测试工具)




而对于这个:a = (b++) + (b++);
vc: a = 0
javaScript: a = 1
和编译器的实现有关,好像没有固定的c++标准
paschen 版主 2015-06-15
  • 打赏
  • 举报
回复
不要纠结这种无谓的问题,如果自己都分不清,何不分成多行写 参看:http://bbs.csdn.net/topics/370153775
fly_dragon_fly 2015-06-15
  • 打赏
  • 举报
回复
同一表达式对自身存在二个副作用,结果未定义
lin5161678 2015-06-15
  • 打赏
  • 举报
回复
引用 3 楼 wojiaomtsa 的回复:
和编译器的实现有关,好像没有固定的c++标准
C++标准固定的说 这中代码的结果是不固定的
lin5161678 2015-06-15
  • 打赏
  • 举报
回复
全部都是错的 具体看置顶帖
zhugay 2015-06-14
  • 打赏
  • 举报
回复
今天测试这个搞了一天,刚才又用javaScript测试了一下。怪事情来了。竟然同样的计算题 vc6 和 javaScript的结果还不同。所以,我现在只能说我 对 c语言的运算符还没有完全搞懂。希望有 专家来 解释一下:
http://www.w3school.com.cn/tiy/t.asp?f=jseg_variables (w3c在线测试工具)




而对于这个:a = (b++) + (b++);
vc: a = 0
javaScript: a = 1
朱传林 2015-06-14
  • 打赏
  • 举报
回复
看的我头都大了

64,660

社区成员

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

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