Open In App

Interesting Facts in C Programming | Set 2

Last Updated : 01 Nov, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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:

C




#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:

C




#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:

C




#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:

C




#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.

C




#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)


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads