verilog四选一多路选择器中输出端口out前面已经声明了output ,为什么后面还要声明寄存器类型

本人是一个刚开始自学verilog的小萌新,问的很基础,请各位大佬不要嫌弃

为什么输出端口out前面已经声明了output ,output默认为线网型,为什么后面还要声明寄存器类型的out, 为什么只要out是寄存器类型

img

img

out 是在 always 中赋值的,在 always 中赋值的只能是 reg 不能是 wire