Arjun Suresh (talk | contribs) (Created page with "<quiz display="simple"> {'''What will be the output of the following code?''' <syntaxhighlight lang="c"> #include<stdio.h> int main(){ int a = 5; int* p = &a; printf("%...") |
Arjun Suresh (talk | contribs) |
||
Line 4: | Line 4: | ||
#include<stdio.h> | #include<stdio.h> | ||
− | int main(){ | + | int main() |
+ | { | ||
int a = 5; | int a = 5; | ||
int* p = &a; | int* p = &a; | ||
printf("%d", ++*p); | printf("%d", ++*p); | ||
− | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 21: | Line 21: | ||
#include<stdio.h> | #include<stdio.h> | ||
− | int main(){ | + | int main() |
+ | { | ||
char a[] = "Hello World"; | char a[] = "Hello World"; | ||
char* p = &a; | char* p = &a; | ||
printf("%s", p+2 ); | printf("%s", p+2 ); | ||
− | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 41: | Line 41: | ||
#include<stdio.h> | #include<stdio.h> | ||
− | int main(){ | + | int main() |
+ | { | ||
int a; | int a; | ||
int* p = &a; | int* p = &a; | ||
printf("%zu", sizeof( *(char*)p )); | printf("%zu", sizeof( *(char*)p )); | ||
− | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 58: | Line 58: | ||
||p is typecasted to char pointer and then dereferenced. So, returned type will be char and sizeof(char) is 1 | ||p is typecasted to char pointer and then dereferenced. So, returned type will be char and sizeof(char) is 1 | ||
+ | {'''Is the following code legal?''' | ||
+ | <syntaxhighlight lang="c"> | ||
+ | #include<stdio.h> | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int a = 1; | ||
+ | if((char*) &a) | ||
+ | { | ||
+ | printf("My machine is little endian"); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | printf("My machine is big endian\n"); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |type="()" | ||
+ | /} | ||
+ | +Yes | ||
+ | -No | ||
+ | |||
+ | {'''Assuming a little endian machine, what will be the output of the following program?''' | ||
+ | <syntaxhighlight lang="c"> | ||
+ | #include<stdio.h> | ||
+ | |||
+ | fun(int a) | ||
+ | { | ||
+ | char *arr[] = {"0000", "0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"}; | ||
+ | unsigned char* p = (unsigned char*) &a ; | ||
+ | p+=3; | ||
+ | int i; | ||
+ | for(i = 0; i < sizeof a; i++) | ||
+ | { | ||
+ | int d = (*p)>>4; | ||
+ | printf("%s", arr[d]); | ||
+ | d = (*p) & 0xf; | ||
+ | printf("%s ", arr[d]); | ||
+ | p--; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int a; | ||
+ | scanf("%d", &a); | ||
+ | fun(a); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |type="()" | ||
+ | /} | ||
+ | +Print the binary of the input number | ||
+ | -Compile error | ||
+ | -Runtime error | ||
+ | -Compiler dependent output | ||
</quiz> | </quiz> |
<quiz display="simple"> {What will be the output of the following code? <syntaxhighlight lang="c">
int main() {
int a = 5; int* p = &a; printf("%d", ++*p);
} </syntaxhighlight> |type="{}" /} { 6 } ||p is pointing to the address of a. *p will return the content of a which is 5 and ++ will increment it to 6.
{What will be the output of the following code?
<syntaxhighlight lang="c">
int main() {
char a[] = "Hello World"; char* p = &a; printf("%s", p+2 );
} </syntaxhighlight> |type="()" /} -Compiler Error -World +llo World -Runtime Error
||Since p is a char pointer p+2 will add 2 to p (since sizeof(char) is 1). So, p+2 will be pointing to the string "llo World"
{What will be the output of the following code? <syntaxhighlight lang="c">
int main() {
int a; int* p = &a; printf("%zu", sizeof( *(char*)p ));
} </syntaxhighlight> |type="()" /}
+1 -2 -4 -Compile Error
||p is typecasted to char pointer and then dereferenced. So, returned type will be char and sizeof(char) is 1
{Is the following code legal? <syntaxhighlight lang="c">
int main() {
int a = 1; if((char*) &a) { printf("My machine is little endian"); } else { printf("My machine is big endian\n"); }
} </syntaxhighlight> |type="()" /} +Yes -No
{Assuming a little endian machine, what will be the output of the following program? <syntaxhighlight lang="c">
fun(int a) {
char *arr[] = {"0000", "0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"}; unsigned char* p = (unsigned char*) &a ; p+=3; int i; for(i = 0; i < sizeof a; i++) { int d = (*p)>>4; printf("%s", arr[d]); d = (*p) & 0xf; printf("%s ", arr[d]); p--; }
}
int main() {
int a; scanf("%d", &a); fun(a);
} </syntaxhighlight> |type="()" /} +Print the binary of the input number -Compile error -Runtime error -Compiler dependent output </quiz>
<quiz display="simple"> {What will be the output of the following code? <syntaxhighlight lang="c">
int main(){
int a = 5; int* p = &a; printf("%d", ++*p);
} </syntaxhighlight> |type="{}" /} { 6 } ||p is pointing to the address of a. *p will return the content of a which is 5 and ++ will increment it to 6.
{What will be the output of the following code?
<syntaxhighlight lang="c">
int main(){
char a[] = "Hello World"; char* p = &a; printf("%s", p+2 );
} </syntaxhighlight> |type="()" /} -Compiler Error -World +llo World -Runtime Error
||Since p is a char pointer p+2 will add 2 to p (since sizeof(char) is 1). So, p+2 will be pointing to the string "llo World"
{What will be the output of the following code? <syntaxhighlight lang="c">
int main(){
int a; int* p = &a; printf("%zu", sizeof( *(char*)p ));
} </syntaxhighlight> |type="()" /}
+1 -2 -4 -Compile Error
||p is typecasted to char pointer and then dereferenced. So, returned type will be char and sizeof(char) is 1
</quiz>