两个很弱的关于自加符的有关问题

两个很弱的关于自加符的问题
下列程序的执行结果为?
            #include <iostream.   h>
            void   main()
            {
                int   a=3,b=0;
                int*p=&a:
                b=+a++;
                cout < <*P < <”,” < <b < <endl;
            }
我知道b是4,a是3还是4?
还有这个
#include <iostream.   h>
            void   main()
            {
                      for(int   a=0,x=0;!x&&a <=10;a++)
                      {
                                    a++;
                        }                                         l
                        cout < <a < <endl;
              }
花括号里的a自加以后,for循环条件语句里的a自加是接着加还是不管花括号里的?


------解决方案--------------------
第一个程序:
b=+a++;
相当于b=(b+a);a++;
所以输出的结果应该是4,3
也就是a自加了一次等于4,
b在a自加之前等于了a+b,也就是3.


第二个程序:
for(int a=0,x=0;!x&&a <=10;a++)
{
a++;
}
a每次都要自加两次,所以当a=10的时候,这时是它最后一次循环了,而这时a仍然要自加两次,所以最后a=12