the following are the rules for determining the resulting type of an expression
-----expression type depends only on the oprands .It does not depend on the left-hand(if any)
-----decimal numbers are signed
-----based_numbers are unsigned,except where the s notation is used in the based specifier
-----bit-select results are unsigned , regardless of the oprands
-----part-select results are unsigned ,regradless of oprands
-----part-select results are unsigned regardless of the oprands even if the part-select specifes the entire vector
reg [15:0] a;
reg signed [7:0] b;
initial
a = b[7:0]; // b[7:0] is unsigned and therefore zero-extended
-----concatenate result are unsigned regtadless of the oprands
-----comparison results (1,0) are unsigned regradless of the oprands
-----reals converted to integers by type coercion are signed
-----the sign and size of any self-determine