回复 10楼 RanDomFun
*&(char)i这个表达式可以解析成* ( & ( (char) i) )
这里(char) i是一个类型转换表达式
但是这个表达式并不是左值
所以对这个表达式做 & 运算是非法的
就如同你不能写 &( i + 1 )一样
但由于* &是互逆的运算
比如 int i;
*&i其实就是i
所以TC的编译器似乎就直接把它们一起忽视了
这样* ( & ( (char) i) ) 就被简化成了(char)i
但这种简化的前提是表达式合法,例如 * & i
而* ( & ( (char) i) ) 本身并不合法
《狂人C:程序员入门必备》