Interesting Facts in C Programming | Set 2
Last Updated :
01 Nov, 2023
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>
#define P printf(
int main()
{
int a;
P"Hello World");
P"%d", a);
return 0;
}
|
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;
}
|
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();
}
|
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>
int nomain();
void _start()
{
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)
Share your thoughts in the comments
Please Login to comment...