CSAPP-3e-Solutions
CSAPP-3e-Solutions copied to clipboard
chapter3/code/3.70.c 答案表述错误了。
*( *(up->e2.next).e1.p ) 与 *(up->e2.next).e1.y 的表达式写错了。
因为 . 的优先级比 * 的高,所以以上写法相当于是 **p 与 *y。即,把整型当做地址来获取值。
正确的写法是 *((*up->e2.next).e1.p) 与 (*up->e2.next).e1.y,因为 -> 的优先级比 * 高。
还有一种更直观的写法 *(up->e2.next->e1.p) 与 up->e2.next->e1.y,因为 -> 与 . 的优先级一样。
void proc(union ele *up)
{
up->e2.x = *(up->e2.next->e1.p) - up->e2.next->e1.y;
}
yeah, i think so