void main()
{
uint8 h[]="Ai",m,*p;
p=h;
m=*p++; //本意是取A
printf( "m=*p++ m=%x",m);
m=*(p++); //本意先p++, 后再与*结合是取i
printf( "m=*(p++) m=%x",m);
}
但是上面两个M的输出都是A,为什么?
实际上 *与++的运算优先级相同, 都是从左至右结合, 但是++是后运算符,当有"="号,无论有无括号
都是p先与*结合,然后赋值,最后再++;
所以, 在表达式中使用++时,总是在所有运算结束之后再++的,即使有括号 .
如:
m=*(p++)+*(p++);