C# Programming Questions and Answers Part-2

1. Select a convenient declaration and initialization of a floating point number:
a) float somevariable = 12.502D
b) float somevariable = (Double) 12.502D
c) float somevariable = (float) 12.502D
d) float somevariable = (Decimal)12.502D

Explanation: We cannot implicitly convert a “double” number directly to any other data type. Here, its float we have to add the required data type to number as :
float somevariable = (float)12.502D; or Double somevariable = (Double)12.502D;

2. Number of digits upto which precision value of float data type is valid?
a) Upto 6 digit
b) Upto 8 digit
c) Upto 9 digit
d) Upto 7 digit

Explanation: By definition.

3. Valid Size of float data type is?
a) 10 Bytes
b) 6 Bytes
c) 4 Bytes
d) 8 Bytes

Explanation: 4 Bytes

4. Minimum and Maximum range of values supported by ‘float’ data type are?
a) 1.5 * 10-40 to 3.4 * 1038
b) 1.5 * 10-45 to 3.4 * 1030
c) 1.5 * 10-45 to 3.4 * 1038
d) 1.5 * 10-45 to 3.4 * 1037

Explanation: By Definition.

5. Why does a float variable stop incrementing at number ‘16777216’ in the following C# code?
float a = 0 ;
while (true)
{
a++;
if (a > 16777216)
break;
}
a) Sign and Exponent for ‘16777217’ is same as for ‘16777216’
b) Mantissa is different for ‘16777216’ and ‘16777217’
c) Sign and Exponent for ‘16777217’ is different from ‘16777216’
d) None of the mentioned

Explanation: 16777216 is exactly 224, and would be represented as 32-bit float like so:
sign = 0 (positive number)
exponent = 24 (stored as 24 + 127 = 151 = 10010111)
mantissa = . 0
As 32 bits floating-point representation: 0 10010111 00000000000000000000000
Therefore: Value = (+ 1) * 2 ^ 24 * (1. 0 + . 0) = 2 ^ 24 = 16777216
Now let’s look at the number 16777217, or exactly 224 + 1: sign and exponent are the same. Mantissa should have to be exactly 2-24 so that (+ 1) * 2 ^ 24 * (1. 0 + 2 ^-24) = 2 ^ 24 + 1 = 16777217 and here lies the actual problem. The mantissa cannot have the value 2-24 because it only has 23 bits, so the number 16777217 just cannot be represented with the accuracy of 32-bit floating points numbers.

6. What will be the output of the following C# code?
static void Main(string[] args)
{
int x = 1;
float y = 2. 4f;
short z = 1;
Console. WriteLine((float) x + y * z - (x + = (short) y) );
}
a) 0.4000004
b) 0.4000023
c) 0.0400021
d) 0.4000001

Explanation: 0.4000001

7. A float occupies 4 bytes. If the hexadecimal equivalent of these 4 bytes are A, B, C and D, then when this float is stored in memory in which of the following order do these bytes gets stored?
a) ABCD
b) DCBA
c) 0 * ABCD
d) Depends on big endian or little endian architecture

Explanation: "Little Endian” means that the lower-order byte of the number is stored in memory at the lowest address, and the high order byte at the highest address. For example, a 4 byte Integer ABCD will be arranged in memory as follows:
Base Address + 0 Byte 0.
Base Address + 1 Byte 1.
Base Address + 2 Byte 2.
Base Address + 3 Byte 3.
Intel processors (those used in PC’s) use “Little Endian” byte order. “Big Endian” means that the high-order byte of the number is stored in memory at the lowest address, and the low-order byte at the highest address. The same 4 byte integer would be stored as:
Base Address + 0 Byte 3.
Base Address + 1 Byte 2.
Base Address + 2 Byte 1.
Base Address + 3 Byte 0.

8. The Default value of Boolean Data Type is?
a) 0
b) True
c) False
d) 1

Explanation: False

9. What will be the output of the following C# code?
public static void Main(string[] args)
{
double ZERO = 0;
Console.WriteLine("RESULT OF DIVISION BY ZERO IS :{0}", (0 / ZERO));
}
a) 1
b) exception argument is thrown
c) NaN
d) 0