k++*k++ k的初值是1,这个表达式的值是多少,原因是什么?

来源:百度知道 编辑:UC知道 时间:2024/06/05 16:25:18
我用JAVA调试的结果是2
不是我钻牛角尖啊,是老师布置的作业撒

这个,我也认为是2;
首先K++表示,K首先拿过来用,然后K=K+1;
此时K=2;在*号后面的K++也是如此,首先K拿过来用,但是此时的K已经是2了,然后自加;
所以式子的结果是1*2=2;最后K的值是3.

运算符优先级问题。
当k = 1的时候 x = k++*k++ 中x是2,而算完以后k = 3了。
因为k++是在k运算结束以后才加1的。但本句中有两个,所以后面的k++的时候k = 2了。但做乘法运算的时候后面的k++没有执行。相当还是2。所以1*2 = 2了。做完乘法运算以后k = 3了。因为有两次k++了。

这个不重要的了。你只要记住
k++和++k的区别
前者是k++以后再赋值,后者赋值以后k++。
假设k = 1 那么
a = k++;中a = 2
a = ++k;中a = 1

你们老师有点毛病。现在搞程序没有一个钻研这种问题。钻研这种问题就是典型的中国人才做的。写程序就是为了能让别人看得更清楚。整的别人看了不明白。只要自己知道的话你这个程序就没有人会去用了。
程序员的目标是让自己下岗,要让全世界的所有人都能自己写出自己想要的程序。

这个东西一直都是一个误导,这种运算不同的编译器系统结果都是不一样的,不信你就试试在WIN和LINUX下的结果

编译器问题,并不存在所谓的第一个如何第二如何,在语法上应该结果是1,但是编译器处理++的方式各不相同,所以导致结果的不稳定。尝试别的编译器看看结果,比如gcc

我不是回答这个问题的,只是就此表达式发表下感想。
其实,明明可以多用些括号就能把所表达的意思搞清楚,为什么要去抠这些语意不明、表达不清的表达式呢?我们写程序不但要给机器看,还要给人看。既然能用更好的表达方法使得人和机器都能够有统一的理解,为什么要省下那两个括号呢?
小弟是编程新手,如有误解,请指出!

很简单,就是1*2啊, 第一次K++意思是K为1,然后K+1,第2次用K的时候K就成2了