Point Out Errors

Question 1 :

Point out the error in the program

f(int a, int b)
{
    int a;
    a = 20;
    return a;
}


A). Missing parenthesis in return statement
B). The function should be defined as int f(int a, int b)
C). Redeclaration of a
D). None of above
Answer : Option C

Explanation :

f(int a, int b) The variable a is declared in the function argument statement.
int a; Here again we are declaring the variable a. Hence it shows the error "Redeclaration of a"


Question 2 :

Point out the error in the program

#include
int f(int a)
{
  a > 20? return(10): return(20);
}
int main()
{
    int f(int);
    int b;
    b = f(20);
    printf("%d\n", b);
    return 0;
}


A). Error: Prototype declaration
B). No error
C). Error: return statement cannot be used with conditional operators
D). None of above
Answer : Option C

Explanation :

In a ternary operator, we cannot use the return statement. The ternary operator requires expressions but not code.


Question 3 :

Point out the error in the program

#include
int main()
{
    int a=10;
    void f();
    a = f();
    printf("%d\n", a);
    return 0;
}
void f()
{
    printf("Hi");
}


A). Error: Not allowed assignment
B). Error: Doesn't print anything
C). No error
D). None of above
Answer : Option A

Explanation :

The function void f() is not visible to the compiler while going through main() function. So we have to declare this prototype void f(); before to main() function. This kind of error will not occur in modern compilers.