#include<stdio.h> typedef unsigned long int uli; typedef uli u; int main() { uli a; u b = -1; a = -1; printf("%lu, %lu", a, b); return 0; }
For 'long int' system will occupy 4 bytes (32 bits).
Therefore,
Binary 1 : 00000000 00000000 00000000 00000001
To represent -1, system uses the 2's complement value of 1. Add 1 to the 1's complement result to obtain 2's complement of 1.
So, First take 1's complement of binary 1 (change all 0s to 1s and all 1s to 0s)
1's complement of Binary 1:
11111111 11111111 11111111 11111110
2's complement of Binary 1: (Add 1 with the above result)
11111111 11111111 11111111 11111111
In HexaDecimal
11111111 11111111 11111111 11111111 = FFFF FFFF FFFF FFFF
In Unsigned Integer
11111111 11111111 11111111 11111111 = 4294967295.
#include<stdio.h> int check(int); int main() { int i=45, c; c = check(i); printf("%d\n", c); return 0; } int check(int ch) { if(ch >= 45) return 100; else return 10; }
Step 2: int l=45, c; The variable i and c are declared as an integer type and i is initialized to 45.
The function check(i) return 100 if the given value of variable i is >=(greater than or equal to) 45, else it will return 10.
Step 3: c = check(i); becomes c = check(45); The function check() return 100 and it get stored in the variable c.(c = 100)
Step 4: printf("%d\n", c); It prints the value of variable c.
Hence the output of the program is '100'.
#include<stdio.h> int main() { int i=1; for(;;) { printf("%d\n", i++); if(i>10) break; } return 0; }
Hence the output of the program is
1
2
3
4
5
6
7
8
9
10
#include<stdio.h> int main() { float a=0.7; if(a < 0.7) printf("C\n"); else printf("C++\n"); return 0; }
#include<stdio.h>
int main()
{
float a=0.7;
printf("%.10f %.10f\n",0.7, a);
return 0;
}
Output:
0.7000000000 0.6999999881
#include<stdio.h> int main() { printf("%x\n", -2<<2); return 0; }
#include<stdio.h> int main() { int i; i = printf("How r u\n"); i = printf("%d\n", i); printf("%d\n", i); return 0; }
i = printf("%d\n", i); In the previous step the value of i is 8. So it prints "8" with a new line character and returns the length of string printed then assign it to variable i. So i = 2 (length of '\n' is 1).
printf("%d\n", i); In the previous step the value of i is 2. So it prints "2".
#include<stdio.h> int main() { #ifdef NOTE int a; a=10; #else int a; a=20; #endif printf("%d\n", a); return 0; }
The macro #ifdef NOTE evaluates the given expression to 1. If satisfied it executes the #ifdef block statements. Here #ifdef condition fails because the Macro NOTE is nowhere declared.
Hence the #else block gets executed, the variable a is declared and assigned a value of 20.
printf("%d\n", a); It prints the value of variable a 20.
#ifndef XSTRING_H
#define XSTRING_H defines the same preprocessor symbol,
Finally, the last line of the file, #endif
#include<stdio.h> #define INFINITELOOP while(1) int main() { INFINITELOOP printf("CuriousTab"); return 0; }
The macro INFINITELOOP while(1) replaces the text 'INFINITELOOP' by 'while(1)'
In the main function, while(1) satisfies the while condition and it prints "CuriousTab". Then it comes to while(1) and the loop runs infinitely.
void *(ptr)*int;
void *(*ptr)()
void *(*ptr)(*)
void (*ptr)()
void (*ptr)()
#include<stdio.h> #define MIN(x, y) (x<y)? x : y; int main() { int x=3, y=4, z; z = MIN(x+y/2, y-1); if(z > 0) printf("%d\n", z); return 0; }
Step 1: int x=3, y=4, z; The variable x, y, z are declared as an integer type and the variable x, y are initialized to value 3, 4 respectively.
Step 2: z = MIN(x+y/2, y-1); becomes,
=> z = (x+y/2 < y-1)? x+y/2 : y - 1;
=> z = (3+4/2 < 4-1)? 3+4/2 : 4 - 1;
=> z = (3+2 < 4-1)? 3+2 : 4 - 1;
=> z = (5 < 3)? 5 : 3;
The macro return the number 3 and it is stored in the variable z.
Step 3: if(z > 0) becomes if(3 > 0) here the if condition is satisfied. It executes the if block statements.
Step 4: printf("%d\n", z);. It prints the value of variable z.
Hence the output of the program is 3
Comments
There are no comments.Copyright ©CuriousTab. All rights reserved.