Languages-C & C Plus Plus [3i Infotech Placement]: Sample Questions 111 - 112 of 354

Glide to success with Doorsteptutor material for competitive exams : get questions, notes, tests, video lectures and more- for all subjects of your exam.

Question 111

Write in Short Short Answer▾

Are the variables argc and argv local to main?

Edit

Explanation

Yes, both argc and argv are local to main method.

Question 112

Describe in Detail Essay▾

What is the output of the following program?

  1. #define assert (cond) if ( (cond)! ) (fprintf (stderr, “assertion failed:%s, file %s, line %d #cond, ⧵ __FILE__, __LINE__), abort () )
  2. void main ()
  3. {
  4. int i =10;
  5. if (i == 0)
  6. assert (i <100);
  7. else
  8. printf ( “This statement becomes else for if in assert macro” );
  9. }
Edit

Explanation

  • In the program
Table Shows the Program
#define assert (cond) if ( (cond) !) ⧵ (fprintf (stderr, “assertion failed:% s, file % s, line % d” #cond, ⧵ ________FILE________, ________LINE________) , abort () )
  • Define macro condition
if (i == 0)

assert (i < 100) ;

  • The else with printf becomes the else for if in the assert macro.
  • Hence nothing is printed.
  • The solution is to use conditional operator instead of if statement
  • #define assert (cond) ( (cond) ? (0) : (fprintf (stderr, “assertion failed: ⧵ % s, file % s, line % d” , #cond, ________FILE________, ________LINE________) , abort () ) )
  • Note: This problem of “matching with nearest else” cannot be solved by the usual method of placing the if statement inside a block like this, #define assert (cond) {⧵if (! (cond) ) ⧵ (fprintf (stderr, “assertion failed:% s, file % s, line % d” , #cond, ⧵ ________FILE________, ________LINE________) , abort () ) ⧵}