Skip to content
Related Articles

Related Articles

Interesting Facts in C Programming | Set 2
  • Last Updated : 28 Jun, 2019
GeeksforGeeks - Summer Carnival Banner

Below are some more interesting facts about C programming:

1. Macros can have unbalanced braces:

When we use #define for a constant, the preprocessor produces a C program where the defined constant is searched and matching tokens are replaced with the given expression.

Example:




#include <stdio.h>
  
// Declaring Macro
// with unbalanced brackets
#define P printf(
  
int main()
{
    int a;
    P"Hello World");
    P"%d", a);
  
    return 0;
}
Output:



Hello World0

2. Use main to declare one or more integer variables:

Example:




#include <stdio.h>
  
int main(int c)
{
    for (; ++c < 28;)
        putchar(95 + c);
    return 0;
}
Output:
abcdefghijklmnopqrstuvwxyz

3. “%m” when used within printf() prints “Success”

m (conversion specifier) is not C but is a GNU extension to printf. The ‘%m’ conversion prints the string corresponding to the error code in errno.

%m only prints “Success” when “errno == 0” (it’s short for a string representation of the last observed error state). For example, if a function fails before the printf, then it will print something rather different.

Example:




#include <stdio.h>
  
int main()
{
    printf("%m");
    return 0;
}
Output:



Success

4. brk(0); can be used as an alternative for return 0;

brk() and sbrk() change the location of the program break, which defines the end of the process’s data segment.

Example:




#include <stdio.h>
  
int main()
{
    printf("%m");
    brk();
}
Output:
Success

5. C program can be written without main()

Logically it seems impossible to write a C program without using a main() function. Since every program must have a main() function because:-

  • It’s an entry point of every C/C++ program.
  • All Predefined and User-defined Functions are called directly or indirectly through the main.

But in reality, it is possible to run a C program without a main function.




#include <stdio.h>
#include <stdlib.h>
  
// entry point function
int nomain();
  
void _start()
{
  
    // calling entry point
    nomain();
    exit(0);
}
  
int nomain()
{
    puts("Geeksforgeeks");
    return 0;
}

Compilation using the command:

gcc filename.c -nostartfiles
(nostartfiles option tells the compiler to avoid standard linking)

Want to learn from the best curated videos and practice problems, check out the C Foundation Course for Basic to Advanced C.

My Personal Notes arrow_drop_up
Recommended Articles
Page :