When you look at the IL code generated by these two fragments, you will realize that VB.NET first converts the integer values ββto doubles, applies division, and then rounds the result before it is converted back to int32 and stored in y.
C # does nothing.
VB.NET IL Code:
IL_0000: ldc.i4.s 10 IL_0002: stloc.1 IL_0003: ldc.i4.s 0A IL_0005: stloc.0 IL_0006: ldloc.1 IL_0007: conv.r8 IL_0008: ldloc.0 IL_0009: conv.r8 IL_000A: div IL_000B: call System.Math.Round IL_0010: conv.ovf.i4 IL_0011: stloc.2 IL_0012: ldloc.2 IL_0013: call System.Console.WriteLine
C # IL Code:
IL_0000: ldc.i4.s 10 IL_0002: stloc.0 IL_0003: ldc.i4.s 0A IL_0005: stloc.1 IL_0006: ldloc.0 IL_0007: ldloc.1 IL_0008: div IL_0009: stloc.2 IL_000A: ldloc.2 IL_000B: call System.Console.WriteLine
Correct integer division in VB requires a backslash: p \ i
Christian May 16 '11 at 5:56 a.m. 2011-05-16 05:56
source share