(1)应该是前自增的优先级和*相同,结合性是自右向左。后自增的优先级要高于*,其结合性是自左向右 !
Example:
#include <iostream>
using namespace std;
int main()
{
int *p=new int[2];
p[0]=1;
p[1]=4;
for(int i=0;i<2;i++)
{
cout<<++*p<<endl;
cout<<*p<<endl;
}
}
输出是
2
2
3
3
因为*与++的优先级相同,而结合是自右向左,所以这里先是结合*p,结果为1,然后++*p则是自加得到2!
得到上述的结果!~~
++与*是同一级上的运算符,但是如果俩同时出现,则自右向左计算~~同一级的还有:
!~ ++ -- - (类型) * & sizeof
优先级参考:http://blog.youkuaiyun.com/jiyucn/archive/2006/06/30/856802.aspx
(2)return不能返回两个值!
可以1.使用结构体
2.把变量地址传过去,利用变量地址修改变量
3 如果是C++的话,还可以使用引用来实现.
4 可以参照Windows的思路 把两个short放在一个long的高位和低位,但是这两方式有特定的使用范围
Example:
struct Result{
int x;
int y;
};
struct Result fun(...){
struct Result r;
...
r.x = ...;
r.y = ...;
return r;
}