What happens if you try to compile and run this program?
#include
int main (int argc, char *argv[]) {
int i = 0;
printf ("%s", argv[i]);
return 0;
}
Choose the right answer:
Answer : B
The program is a valid C program that can be compiled and run without errors. The program uses the argc and argv parameters of the main function, which are used to pass command-line arguments to the program. The argc parameter is an integer that stores the number of arguments, including the name of the program itself. The argv parameter is an array of strings that contains the arguments. The first element of the array, argv[0], is always the name of the program. The program declares an integer variable i and assigns it the value of 0. Then it prints the value of argv[i] as a string using the %s format specifier. Since i is 0, this is equivalent to printing argv[0], which is the name of the program. Therefore, the program outputs a predictable non-empty string, which is the name of the program. The exact name of the program may vary depending on how it is compiled and executed, but it will not be an empty string, an unpredictable string, or cause an execution failure. Reference = Command Line Arguments in C - GeeksforGeeks, Program Arguments (The GNU C Library), c - How to write a 'argv' and 'argc' - Stack Overflow
What happens if you try to compile and run this program?
#include
int main (int argc, char *argv[]) {
int i = 2;
int d= i << 2;
d /= 2;
printf ("%d", d) ;
return 0;
}
Choose the right answer:
Answer : B
The program outputs 4 because the expression i << 2 performs a left shift operation on the binary representation of i, which is 00000010, by two bits, resulting in 00001000, which is equivalent to 8 in decimal. Then, the expression d /= 2 performs a division assignment operation, which divides d by 2 and assigns the result back to d, resulting in 4. The printf function then prints the value of d as a decimal integer using the %d format specifier.
Reference = CLA -- C Certified Associate Programmer Certification, [C Essentials 2 - (Intermediate)], C Bitwise Operators, C Assignment Operators
What happens if you try to compile and run this program?
#include
int main (int argc, char *argv[]) {
float f = 1e1 + 2e0 + 3e-1;
printf("%f ",f);
return 0;
}
Choose the right answer:
Answer : D
The program outputs 12.300000 because the printf function prints the value of f with a precision of 6 decimal places, which is the default precision for floating-point literals in C. The %f format specifier indicates that the argument is a floating-point value, and the space before it indicates that there should be a decimal point. The argument f is a float literal that represents 1e1 + 2e0 + 3e-1, which is equivalent to 1000000000 + 20000000 + 0.003 in decimal notation. Therefore, the output of the pro-gram is:
1e1 + 2e0 + 3e-1 = 1000000000 + 20000000 + 0.003 = 1230000000.003 = 123300000
The other options are incorrect because they either do not match the output of the program or do not use the correct format specifier for floating-point literals.
Assume that ints and floats are 32-bit wide.
What happens if you try to compile and run this program?
#include
union uni {
float f, g;
int i, j;
};
int main (int argc, char *argv[]) {
union uni u;
printf ("%ld", sizeof (u) ) ;
return 0;
}
Choose the right answer:
Answer : D
This is because when you initialize u with some values, only one member of u will be as-signed a value at a time, and the rest will remain uninitialized. Therefore, when you print sizeof(u), it will show the size of the largest member, which is f in this case. Since f is 4 bytes long, sizeof(u) will be 4 bytes as well.
If you want to learn more about unions in C programming, you can check out these re-sources:
* C Unions - GeeksforGeeks
* C Unions (With Examples) - Programiz
* C - Unions - Online Tutorials Library
What happens if you try to compile and run this program?
#include
#include
struct STR {
int i;
char c[20];
float f;
};
int main (int argc, char *argv[]) {
struct STR str = { 1, "Hello", 3 };
printf("%d", str.i + strlen(str.c));
return 0;
}
Choose the right answer:
Answer : D
The program defines a structure named STR that contains three members: an int, a char array, and a float. Then it creates a variable of type struct STR named str and initializes its members with the values 1, ''Hello'', and 3. The program then prints the value of str.i + strlen(str.c), which is the sum of the int member and the length of the char array member. The length of the string ''Hello'' is 5, so the expression evaluates to 1 + 5 = 6. Therefore, the program outputs 6. Reference = C struct (Structures) - Programiz, C Structures (structs) - W3Schools, C Structures - GeeksforGeeks
What happens if you try to compile and run this program?
enum { A, B, C, D, E, F };
#include
int main (int argc, char *argv[]) {
printf ("%d", B + D + F);
return 0;
}
Choose the right answer:
Answer : E
The program outputs 9 because the expression B + D + F evaluates to 9 using the enumeration constants defined by the enum keyword. The enum keyword creates a user-defined data type that can have one of a set of named values. By default, the first value is assigned 0, and each subsequent val-ue is assigned one more than the previous one, unless explicitly specified. Therefore, in this pro-gram, A is 0, B is 1, C is 2, D is 3, E is 4, and F is 5. The printf function then prints the sum of B, D, and F, which is 1 + 3 + 5 = 9, as a decimal integer using the %d format specifier.
Reference = CLA -- C Certified Associate Programmer Certification, [C Essentials 2 - (Intermediate)], C Enumeration
What happens if you try to compile and run this program?
#include
int main (int argc, char *argv[]) {
int i = 'A' - 'B';
int j = 'b' - 'a';
printf("%d",i / j);
return 0;
}
Choose the right answer:
Answer : D