What will be the output of the following code?
int x = 5;
float y = x;
printf("%f", y);
Implicit type conversion occurs from int to float. The value 5 is converted to 5.0 and printed as 5.000000 with %f format specifier.
Which of the following occupies maximum memory in a 64-bit system?
In a 64-bit system, long double typically occupies 16 bytes (128 bits), which is the maximum among these options.
What is the range of unsigned int in a 32-bit system?
Unsigned int uses all 32 bits for magnitude, giving range 0 to 2^32 - 1 (0 to 4,294,967,295).
What is the difference between 'static' and 'extern' variables?
static restricts variable visibility to the current file; extern declares a variable defined elsewhere with global scope.
What is the output of the following code?
int x = 10;
int *p = &x;
printf("%d", *p);
p is a pointer to x. *p dereferences the pointer, giving the value of x, which is 10.
Advertisement
Which variable storage class has default initialization to 0?
Static variables are automatically initialized to 0 by the compiler.
What is the output of this code?
float x = 25;
printf("%f", x);
25 performs integer division (both operands are int), resulting in 2. This is then converted to float as 2.0.
What happens when you declare a variable without initializing it?
Auto variables (local variables) contain unpredictable garbage values if not initialized. Static/global variables are initialized to 0.
Which data type is most suitable for storing a decimal number with high precision?
long double provides maximum precision (typically 80-128 bits) for decimal numbers compared to float (32 bits) and double (64 bits).
In C, which storage class has the longest scope and lifetime?
extern variables have global scope and exist throughout program execution. They can be accessed across multiple files.
Which storage class variable is automatically initialized to 0 if not explicitly initialized?
static variables are automatically initialized to 0 for numeric types and NULL for pointers if not explicitly initialized.
Consider: long long int x; What is the minimum guaranteed size of x according to C standard?
According to C99 standard, long long int is guaranteed to be at least 8 bytes (64 bits).
Which of the following demonstrates proper type casting in C?
C uses C-style casting with parentheses: (type) expression. This converts 5.7 to integer 5.
What is the difference between 'signed' and 'unsigned' char in terms of range?
Signed char uses 1 bit for sign, giving -128 to 127. Unsigned char uses all 8 bits for magnitude, giving 0 to 255.
Which keyword prevents a local variable from being optimized by compiler into a register?
volatile tells compiler that a variable's value may change unexpectedly and should not be optimized. It's often used for hardware registers.
In the declaration 'int *p, q;', what are the data types of p and q?
The * applies only to p. So p is int*, and q is int. To declare both as pointers: int *p, *q;
What happens when you attempt to store a double value in an int variable without explicit casting?
Implicit conversion truncates the fractional part. Modern compilers may warn but allow this. Example: int x = 5.9; results in x = 5.
Which of the following is a correct way to declare a constant variable in modern C?
Option B is the correct C99/C11 syntax. #define is preprocessing, while const is a type qualifier that provides type safety.
What is the output of: printf("%d", sizeof(char) + sizeof(int) + sizeof(float)); on a typical 32-bit system?
sizeof(char)=1, sizeof(int)=4, sizeof(float)=4 on 32-bit systems. Total: 1+4+4=9 bytes.
A variable declared with 'register' storage class suggests to the compiler to store it in:
register is a hint to compiler to store variable in CPU register for faster access. Compiler may ignore this if registers unavailable.