First of all, Visual Basic does not permit chained assignments, as does the C programming language. Only the first = assignment operator is valid. The second = symbol is used to test equality of an expression, not to assign a value.
To reiterate and simplify what jmcilhinney said above:
The def = hij expression is assigned a value based on whether or not def is equal to hij. If it is equal, it is True. If it is not equal, it is False. Since you declared abc as an Integer, the True or False value is converted to either -1 (if True) or 0 (if False). That value (either -1 or 0) is then assigned to the variable abc.
Try changing the value of hij to another number. The messagebox will then return 0 instead of -1.
Also try changing the type declaration of abc to Boolean instead of Integer. It will then return either True or False.
If you simply want to assign the value of def to abc, then just leave out the second = hij