main() { int a[5] = {10,20,30,40,50}; char *p; p=(char *)a; printf("%d\n",a); }

  1. some value

  2. compilation error

  3. 10

  4. 50


Correct Option: A

AI Explanation

To answer this question, let's go through the code step by step:

main() {
    int a[5] = {10,20,30,40,50};
    char *p;
    p=(char *)a;
    printf("%d\n",a);
}

In this code, an integer array a is declared and initialized with values 10, 20, 30, 40, and 50.

The variable p is declared as a character pointer.

The line p=(char *)a; casts the integer array a to a character pointer p. This means that p now points to the first element of the integer array a.

The printf("%d\n",a); statement prints the value of the integer array a. However, the format specifier %d is used to print integers, not arrays.

So, the correct format specifier to print the value of a would be %p, which is used to print pointers.

Now, let's go through the options:

A) Some value - This option is correct. When we use the incorrect format specifier %d to print the array a, it will print some unexpected value. The exact value printed will depend on the system and compiler being used.

B) Compilation error - This option is incorrect. The code will compile without any errors.

C) 10 - This option is incorrect. Since the incorrect format specifier %d is used, it will not print the value 10.

D) 50 - This option is incorrect. Since the incorrect format specifier %d is used, it will not print the value 50.

The correct answer is A) Some value, as explained above.

Find more quizzes: