Any benefit of using assert instead of using a simple "if" ?

Viewed 10309

Given this code :

#include <stdio.h>
#include <assert.h>

void print_number(int* somePtr) {
  assert (somePtr!=NULL);
  printf ("%d\n",*somePtr);
}

int main ()
{
  int a=1234;
  int * b = NULL;
  int * c = NULL;

  b=&a;

  print_number (c);
  print_number (b);

  return 0;
}

I can do this instead :

#include <stdio.h>
#include <assert.h>

void print_number(int* somePtr) {
  if (somePtr != NULL)
       printf ("%d\n",*somePtr);
  // else do something 
}

int main ()
{
  int a=1234;
  int * b = NULL;
  int * c = NULL;

  b=&a;

  print_number (c);
  print_number (b);

  return 0;
}

So , what am I gaining by using assert ?

Regards

6 Answers

Listen If Your (if) statement becomes True or False so compiler go for the next instructions. But in assert.h when your statement becomes false "Program Terminates immediately" with assertion message.

EXAMPLE :*

#include <assert.h> #include <stdio.h>

int main () {

    int a;
    printf("Enter an integer value: "); scanf("%d", &a); assert(a >= 10);
    printf("Integer entered is %d\n", a);
    return(0); }
Related