鱼C论坛

 找回密码
 立即注册
查看: 1246|回复: 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 | 显示全部楼层
说真的,纠结这类问题没有意义
        int a, b, c;

        a = (b = 3, 4, c = b++ + 5, ++c + ++b);
00A3204E  mov         dword ptr [b],3  
00A32055  mov         eax,dword ptr [b]  
00A32058  add         eax,5  
00A3205B  mov         dword ptr [c],eax  
00A3205E  mov         ecx,dword ptr [b]  
00A32061  add         ecx,1  
00A32064  mov         dword ptr [b],ecx  
00A32067  mov         edx,dword ptr [c]  
00A3206A  add         edx,1  
00A3206D  mov         dword ptr [c],edx  
00A32070  mov         eax,dword ptr [b]  
00A32073  add         eax,1  
00A32076  mov         dword ptr [b],eax  
00A32079  mov         ecx,dword ptr [c]  
        int a, b, c;

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

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

使用道具 举报

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

int main(void)
{
        int a, b, c;

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

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

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-28 00:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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