A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 一步一脚印=-= 于 2016-1-30 23:31 编辑
  1. #include <stdio.h>
  2. #include <stdlib.h>


  3. int main(int argc, char *argv[]) {
  4.         
  5.         int a=3,a1=3,b=2,b1=2,z=0,z1=0, result=0,result1=0;
  6.         
  7.         result = (a++,(a+3,b+5,z=a+b));
  8.         
  9.         result1 = (a1++,a1+3,b1+5,z1=a1+b1);
  10.         
  11.         
  12.         printf("result = %d\n",result);
  13.         printf("result1 = %d\n",result1);

  14.         return 0;
  15. }
复制代码
如上所示,这里上下俩个逗号表达式的结果都一样,可是上面的有括号不是应该先算括号内的逗号表达式吗?

点评

怎么没人回答啊?  发表于 2016-1-30 19:51

8 个回复

倒序浏览
关键在于a++; 在语句执行完之后才自加+,所以result和result1结果一致
回复 使用道具 举报
在不影响等式结果的情况下是从左往右执行的,所以就不必去看优先级了
回复 使用道具 举报
曦正 发表于 2016-2-9 15:16
在不影响等式结果的情况下是从左往右执行的,所以就不必去看优先级了

我是这么看的:上面的result先算括号里面的逗号表达式,a的值是3,z等于3+2等于5.而下面的result是等于6的.可编译运行的结果显示俩个都是6.....不是很理由为什么上面的result是6而不是5.

回复 使用道具 举报
没有按括号到优先级执行的,你自己试验多几次就知道了,这个套多N层括号都没用
回复 使用道具 举报
曦正 发表于 2016-2-10 10:16
没有按括号到优先级执行的,你自己试验多几次就知道了,这个套多N层括号都没用 ...

嗯,确实如此,括号这里不起作用
回复 使用道具 举报
帮顶! 学习了!
回复 使用道具 举报
曦正 中级黑马 2016-2-15 18:30:48
8#
一步一脚印=-= 发表于 2016-2-15 00:14
嗯,确实如此,括号这里不起作用

嗯,逻辑运算也是这样的,你也可以试试
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马