这道题目是合法的。在这个操作中,将指针 `p` 的值强制转换为 `long int` 类型,并将其赋值给变量 `j`。由于 `long int` 和指针类型都是整数类型,因此这个操作是合法的。
需要注意的是,这个操作可能会导致数据精度丢失或者溢出。因为指针类型通常比 `long int` 类型更长,如果将一个指针类型的值强制转换为 `long int` 类型,可能会导致一些高位数据被截断,从而导致数据精度丢失。另外,如果指针类型的值太大,超过了 `long int` 类型所能表示的范围,那么转换后的结果就会溢出。因此,在进行这种类型的操作时,需要特别小心,确保不会发生数据精度丢失或者溢出的情况。