作业帮 > 综合 > 作业

在C语言的环境下,a=5;b=a++;c=--a-b++;d=(a++)-(++b)+c--;结果是多少,怎么算?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 11:14:32
在C语言的环境下,a=5;b=a++;c=--a-b++;d=(a++)-(++b)+c--;结果是多少,怎么算?
首先进行第一步“a=5”:将5赋给a,这样实现了a=5
然后进行第二步“b=a++”,由于++为后缀,所以先将a值赋给b,结果b=5,然后进行a++运算,a=6
然后进行第三步“c=--a-b++”,首先--为前缀,所以先运算--a,结果a=5,由于++为后缀,所以接下来先运算c=a-b,结果c=5-5.为0,最后进行b++运算,结果b=6
最后一步“d=(a++)-(++b)+c--”,先运算括号里面的“a++”和“++b”,结果a=6,b=7,由于--为后缀,所以先运算d=a-b+c,也就是d=6-7+1=0,最后运算c--.结果c=-1
以上是运算结果,考的主要是运算的优先级,是这样的,看见括号里面的,先运算括号里面的,没有括号的,你要看++或是--,是前缀,还是后缀,如果是前缀的话,先运算++或是--运算,如果是后缀的话,你就先运算整个式子,运算完了整个式子,再运算++或是--运算,至于具体的例子,我给你的计算过程,你可以自己结合着体会一下,有什么不明白的,就追问我.
再问: 谢谢你帮我回答,在问下++ 优先级比= 高为什么不先运算++啊
再答: 首先第一个问题,++优先级最高,但是规定,如果++为后缀的时候,先算其他所有的式子,再算++。所以,如果++后缀,就先算=了。 第二个问题,实在对不起,我看错了,还有一点我刚才又查了查,并且运行了一下,所以,我误导了你,现在要要纠正一下。是在对不起。我重新说一下第三步,首先看括号里面的,先运算括号里面的“a++”和“++b”,但是这里由于a++为后缀,所以虽然有括号,但是也要最后算,所以算最后一大步时候,是这样算的,先算++b,结果b=7,然后算d=a-b+c,也就是d=5-7+0,结果d=-2,然后最后算a++和c--,结果a=6,c=-1,所以你得到的数最后为a=6,b=7,c=-1,d=-2.这回没错了,是在对不起你,误导你了。这次我实际运行了一下,这个结果和过程是绝对没错的了。对不起啊。
再问: 谢谢你,在问下()得优先级比++的高,应该要强制先运算括号内的啊
再答: 对啊,先算++,但是a++的效果就是,先算整个式子,所以先算整个式子,我刚学的时候也理解不了,后来一点一点就明白了。你可以这么理解,你先算()里面。于是你算里面的时候发现,里面有++的后缀,所以你就要算完所有的,再算()中的++后缀。其实你算外面的那些东西,就是再算++的过程,因为++规定,最后算他。你不算其他的,怎么算他呢,你说是吧。所以你可以把算外面理解成,是你先算括号里面的++的,过程。 这样说,你可能不太明白,我给你比喻一下。就好像,你在一大堆琐事里面,有一个非常重要的事情,要先做,这就是括号里面的东西。但是你发现,要把这件事做成功,你还要先做成其他的不是很重要的事情,这就是后缀的作用。也就是说你在做其他不重要的事情的时候,其实是已经在做这件重要的事情了。只不过是在间接地做。 ++或是--,后缀的定义就是,先做完其他操作后,再做这项+1或是-1的操作。这本来就是两个要求,第一步,先做完其他的操作,第二步才是做+1或是-1操作。你不能单纯的把他理解成是+1或是-1的操作。 所谓的优先级是先算哪个的问题。你能看见()先算,没错。但是当你先算括号内时,发现是自加或自荐后缀,所以由于上述的这个运算的双重要求,所以进行整个算式的计算后,最后运算这个式子。也就是说,让你先算其他的东西的,不是因为()优先级低,而是因为()内的++运算性质决定的。 希望能帮助到你,对于这个自加运算和自减运算,如果你还理解不了,就继续问我,不过建议你自己,调试一段小程序试一试。
再问: 非常非常谢谢,在问下最后一个问题如果最后一个算式我把括号拿掉如d=a++-(++b)+c--;这个用小程序算也是一样的结果,那为什么要加括号呢?
再答: 你这个问题,其实我当初也问过。这只是个题,为了帮助你理解优先级和自加运算性质区别的,所以加了括号。在真正编程时候,一般是不会这么写的。只是帮助你理解而已,没有特殊的含义的。相比之下,你理解自加运算了吗?我知道我说的也许有点抽象,但是希望能帮到你。因为我当初学的时候,就在这里费了很大劲,没有人愿意给我详细讲讲,呵呵,所以如果你还是不懂,就告诉我,我留下qq,咱们两个直接交流,应该会有帮助。