求助关于一题逗号表达式的C语言试题,谢谢
假设所以变量均为整型,则表达式(a=3,b=6,++a,b++,a+b);的值是多少?答案是:11疑问一:我个人觉得是10,因为b++是先使用再自加,++a先自加再使用咯...
假设所以变量均为整型,则表达式(a=3,b=6,++a,b++,a+b);的值是多少?
答案是:11
疑问一:我个人觉得是10,因为b++是先使用再自加,++a先自加再使用咯?那么就是a+b(a=4,b=6)得出10后,b再自加为7咯?
如果按答案是等于11,那么就是说题中的“++a,b++,”改为“++a,++b,”或者“a++,b++,”答案都是11,没影响??
疑问二:逗号符的优先级不是最低的吗?那怎么能够使表达式从左向右运算呢?
那么就是请大家一步步详细讲解给我听,万分感谢
请好心的大家,因为我自加没有按C语言程序软件,所以希望最好是帮我在C程序环境下对你运行下看看答案到底是什么?用实践检验真理,谢谢大家 展开
答案是:11
疑问一:我个人觉得是10,因为b++是先使用再自加,++a先自加再使用咯?那么就是a+b(a=4,b=6)得出10后,b再自加为7咯?
如果按答案是等于11,那么就是说题中的“++a,b++,”改为“++a,++b,”或者“a++,b++,”答案都是11,没影响??
疑问二:逗号符的优先级不是最低的吗?那怎么能够使表达式从左向右运算呢?
那么就是请大家一步步详细讲解给我听,万分感谢
请好心的大家,因为我自加没有按C语言程序软件,所以希望最好是帮我在C程序环境下对你运行下看看答案到底是什么?用实践检验真理,谢谢大家 展开
9个回答
展开全部
首先,在这个表达式中逗号优先级最低,按照从左往右的顺序运算。可以将表达式表示为
(((((a=3),(b=6)),(++a)),(b++)),(a+b)),这样是多个逗号运算符从左往有运算的顺序!对吧?
其实你不明白的就是逗号,逗号表达式中,每个逗号分隔的是一个个计算单位,这个表达式是由多个计算单位构成的。
整个表达式的执行过程是:
a = 3;
b = 6;
++a;//a=4
b++;//b在遇到逗号后就认为本次计算单位已经结束,所以自加b=7
a+b;//等于11,整个表达式运算结束,表达式的值为11
同样对于
b=6;
b++;//这种情况b遇到分号,认为计算单位结束,再++。
所以后++并不是只遇到分号才++,而是判断计算单位结束才++。不知道我说的是不是能够让你满意。
(((((a=3),(b=6)),(++a)),(b++)),(a+b)),这样是多个逗号运算符从左往有运算的顺序!对吧?
其实你不明白的就是逗号,逗号表达式中,每个逗号分隔的是一个个计算单位,这个表达式是由多个计算单位构成的。
整个表达式的执行过程是:
a = 3;
b = 6;
++a;//a=4
b++;//b在遇到逗号后就认为本次计算单位已经结束,所以自加b=7
a+b;//等于11,整个表达式运算结束,表达式的值为11
同样对于
b=6;
b++;//这种情况b遇到分号,认为计算单位结束,再++。
所以后++并不是只遇到分号才++,而是判断计算单位结束才++。不知道我说的是不是能够让你满意。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
11;b后自加后,值加一,只有在一个表达式里前自加和后自加才有区别。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看来你真是个不折不扣的外行了,是不是学文科的想考计算机啊?i++是先取值再加1,如果出现在一个表达式中,从左至右起碰到的第一个"i++"取i的值,取完后i值自增1,此后i值就是i+1了,如果再碰到第二个"i++",那么这里取i+1,因为上一次取值i就增1了,这次取毕后i再增1变为i+2,依此类推。而++i则是在取值之前将原值加1,其他没有什么区别。再看你的题(a=3,b=6,++a,b++,a+b),++a之后a=4,b++后b=7。不知道你怎么想的,可能你认为b++是取后再加1,但是b++这里并没有取b的值所以暂时不加1待下次取了再加,呵呵,你把计算机想得太人性化了。单独存在的a++与++a没有任何区别,只有在表达式中才区分。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果a++单独使用就和++a一样,因为无论是a++还是++a都可写出a=a+1,如果有:b=a++;则b的值为a,a的值为a+1。所以,上题可化简为(a=3,b=6,a=a+1,b=b+1,a+b),结果为11.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询