新手求教关于!和++的运算规则解决方法

新手求教关于!和++的运算规则
比如,!x++ 是先执行非运算 还是先执行++运算? 教材上说着两个运算符优先级都是2,结合规则是从右至左,按这么说应该是先执行自增运算,但我看到的一个小程序上是先执行非运算的 怎么回事?
附上小程序  
#include <iostream>
using namespace std;
int main()
{
int a,x;
for(a=0,x=0;a<=1&&!x++;a++)
{
a++;
}
cout<<a<<x<<endl;
return 0;
}
求解答,小弟不胜感激!~~

------解决方案--------------------
!x++虽然会先执行++,但返回的值却不是x+1,而是x。所以,你看到的结果还是!x。

虽然增量变量,但却不会返回增量后的结果,这就是后置++的特色。