鱼C论坛

 找回密码
 立即注册
查看: 1137|回复: 3

[已解决]请教 逗号运算符问题 各位师兄指点指点小弟

[复制链接]
发表于 2017-3-18 11:57:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
b的值 是不是这样求的 答案说是5  

表达式a = (b = 3, 4, c = b++ + 5, ++c + ++b)
                   b = 3         c = 3++ + 5, ++c + ++b
                   b = 4     c =8         9   +  5
                   b = 4(这个4 是b++得来的 不是b = 3, 4 里面的4)能理解成 b = 3, 4中的 4是打马虎眼 没有用的么
                  
                   那我想问b = 3, 4  什么条件 b = 4(b什么时候等于3, 后面的4)
                                      为什么b 不是直接等于4
                    这样写 是不是b就直接等于4 了 (b = 3, 4)  在一个小括号里?
                                                      (b = 4)
                    
最佳答案
2017-3-18 13:03:10
无标题.png
QQ图片20170318115232.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-18 12:56:18 | 显示全部楼层
说真的,纠结这类问题没有意义

  1.         int a, b, c;

  2.         a = (b = 3, 4, c = b++ + 5, ++c + ++b);
  3. 00A3204E  mov         dword ptr [b],3  
  4. 00A32055  mov         eax,dword ptr [b]  
  5. 00A32058  add         eax,5  
  6. 00A3205B  mov         dword ptr [c],eax  
  7. 00A3205E  mov         ecx,dword ptr [b]  
  8. 00A32061  add         ecx,1  
  9. 00A32064  mov         dword ptr [b],ecx  
  10. 00A32067  mov         edx,dword ptr [c]  
  11. 00A3206A  add         edx,1  
  12. 00A3206D  mov         dword ptr [c],edx  
  13. 00A32070  mov         eax,dword ptr [b]  
  14. 00A32073  add         eax,1  
  15. 00A32076  mov         dword ptr [b],eax  
  16. 00A32079  mov         ecx,dword ptr [c]  
  17.         int a, b, c;

  18.         a = (b = 3, 4, c = b++ + 5, ++c + ++b);
  19. 00A3207C  add         ecx,dword ptr [b]  
  20. 00A3207F  mov         dword ptr [a],ecx  

  21.         printf("a = %d, b = %d, c = %d\n", a, b, c);
  22. 00A32082  mov         eax,dword ptr [c]  
  23. 00A32085  push        eax  
  24. 00A32086  mov         ecx,dword ptr [b]  
  25. 00A32089  push        ecx  
  26. 00A3208A  mov         edx,dword ptr [a]  
  27. 00A3208D  push        edx  
  28. 00A3208E  push        offset string "a = %d, b = %d, c = %d\n" (0A37BFCh)  
  29. 00A32093  call        _printf (0A31343h)  
  30. 00A32098  add         esp,10h  
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-18 12:57:08 | 显示全部楼层
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int a, b, c;

  5.         a = (b = 3, 4, c = b++ + 5, ++c + ++b);

  6.         printf("a = %d, b = %d, c = %d\n", a, b, c);

  7.         return 0;
  8. }
复制代码

  1. a = 14, b = 5, c = 9
  2. 请按任意键继续. . .
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-18 13:03:10 | 显示全部楼层    本楼为最佳答案   
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 02:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表