黑马程序员技术交流社区

标题: c语言中逗号表达式的嵌套问题 [打印本页]

作者: 一步一脚印=-=    时间: 2016-1-30 18:46
标题: c语言中逗号表达式的嵌套问题
本帖最后由 一步一脚印=-= 于 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. }
复制代码
如上所示,这里上下俩个逗号表达式的结果都一样,可是上面的有括号不是应该先算括号内的逗号表达式吗?


作者: u37kl    时间: 2016-2-9 14:22
关键在于a++; 在语句执行完之后才自加+,所以result和result1结果一致
作者: 曦正    时间: 2016-2-9 15:16
在不影响等式结果的情况下是从左往右执行的,所以就不必去看优先级了
作者: 一步一脚印=-=    时间: 2016-2-9 22:39
曦正 发表于 2016-2-9 15:16
在不影响等式结果的情况下是从左往右执行的,所以就不必去看优先级了

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


作者: 曦正    时间: 2016-2-10 10:16
没有按括号到优先级执行的,你自己试验多几次就知道了,这个套多N层括号都没用
作者: 一步一脚印=-=    时间: 2016-2-15 00:14
曦正 发表于 2016-2-10 10:16
没有按括号到优先级执行的,你自己试验多几次就知道了,这个套多N层括号都没用 ...

嗯,确实如此,括号这里不起作用
作者: 847374032    时间: 2016-2-15 00:18
帮顶! 学习了!
作者: 曦正    时间: 2016-2-15 18:30
一步一脚印=-= 发表于 2016-2-15 00:14
嗯,确实如此,括号这里不起作用

嗯,逻辑运算也是这样的,你也可以试试




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2