d=(c=a+b,a=4,a++,b=a+1)请问在c语言中输出值a,b,c,d
答案:2 悬赏:10 手机版
解决时间 2021-01-28 11:02
- 提问者网友:且恨且铭记
- 2021-01-27 21:08
d=(c=a+b,a=4,a++,b=a+1)请问在c语言中输出值a,b,c,d
最佳答案
- 五星知识达人网友:冷風如刀
- 2021-01-27 22:19
不知道这是一个什么题,其中有几个值是否进行初始化了。
这里简单说一下具体的情况
逗号运算符中运算顺序是从左到右运算的,其中赋值运算的优先级是高于逗号运算的,因此这里面首先执行的是a=4,此时结束后依次从左到右运算。
那么接下来执行的是c=a+b,这里存在一个问题,就是b没有初始化,导致c的结果每次运行的值不一致,之后执行a++,那么a的值为5,之后执行b=a+1,此时b的值为6,d的值为最后一项运算结构也就是6;
总结一下整个式子的执行顺序为:
a=4;
c=a+b;//这里的b没有初始化,会存在问题
a++;
b=a+1;
d=(....,b=a+1);//此时的b为6
这里我用程序简单跑了一下,在codeblocks下结果与分析一致;在VS2012下程序编译就不过,它不让未初始化的变量(这里也就是b)存在等号的右边参与运算,直接就出错了。
这里简单说一下具体的情况
逗号运算符中运算顺序是从左到右运算的,其中赋值运算的优先级是高于逗号运算的,因此这里面首先执行的是a=4,此时结束后依次从左到右运算。
那么接下来执行的是c=a+b,这里存在一个问题,就是b没有初始化,导致c的结果每次运行的值不一致,之后执行a++,那么a的值为5,之后执行b=a+1,此时b的值为6,d的值为最后一项运算结构也就是6;
总结一下整个式子的执行顺序为:
a=4;
c=a+b;//这里的b没有初始化,会存在问题
a++;
b=a+1;
d=(....,b=a+1);//此时的b为6
这里我用程序简单跑了一下,在codeblocks下结果与分析一致;在VS2012下程序编译就不过,它不让未初始化的变量(这里也就是b)存在等号的右边参与运算,直接就出错了。
全部回答
- 1楼网友:杯酒困英雄
- 2021-01-27 22:31
经过程序验证,两次运行结果都是4,lz也可以仔细分析一下,很容易得出结果就是4的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯