为什么说这样的代码不好?
不是优先级先调用函数?结合性从左到右计算么?
不就是输出-10吗?初学不是很懂,最好应该怎么理解?
判断优先级和结合性的前提是,相邻操作符,而这里的 3个函数调用操作符并不是相邻的,所以你并不知道他会先调用那个函数
优先级和结合形并不能确定唯一的计算路径,列如下面这个表达式也是如此:
answer = fun() - fun() * fun(); 从左往右执行, fun() ==> ++count; 得到 函数的返回值为:2; fun() ==> count 为静态变量,所以return ++count; 此时函数的返回值为 3 ; fun() ==> 此时函数返回值为 4。所以 answer = fun() - fun() * fun() = 2 - 3 * 4 = -10。
是输出-10啊
从左到右结合,count在程序运行结束后才会被释放
乘的优先级是比加要高,但是它调用顺序是从左到右的,是先计算乘法,不是先调用