What happens when you declare a variable without initializing it?
A It's set to 0 automatically B It contains garbage value (for auto variables) C Compilation error occurs D It's set to NULL
Auto variables (local variables) contain unpredictable garbage values if not initialized. Static/global variables are initialized to 0.
Which of the following correctly demonstrates pointer arithmetic?
A int *p; p++; B int x = 5; x++; C char c = 'a'; c = c + 1; D float f = 3.14; f = f + 1;
Option A shows pointer arithmetic where p++ increments the pointer by the size of int (4 bytes). Other options are regular arithmetic operations.
What is the output of the following code? int a = 5; int *p = &a; int **q = &p; printf("%d", **q);
A 5 B Address of a C Address of p D Compilation error
q is a pointer to pointer p. **q dereferences both pointers, giving the value of a, which is 5.
Which data type is most suitable for storing a decimal number with high precision?
A float B double C long double D int
long double provides maximum precision (typically 80-128 bits) for decimal numbers compared to float (32 bits) and double (64 bits).
What is the range of values for a signed char in C?
A 0 to 255 B -128 to 127 C -256 to 255 D -127 to 128
A signed char occupies 1 byte (8 bits). With sign bit, it ranges from -128 to 127 (2^7 to 2^7-1).
Which keyword is used to modify a variable so that it cannot be changed?
A static B const C register D extern
The const keyword makes a variable read-only after initialization. Its value cannot be modified during program execution.
In C, which storage class has the longest scope and lifetime?
A auto B register C static D extern
extern variables have global scope and exist throughout program execution. They can be accessed across multiple files.
What is the size of the double data type in most 64-bit systems?
A 4 bytes B 8 bytes C 16 bytes D Compiler dependent, no fixed size
In standard C on 64-bit systems, double occupies 8 bytes and can store values with approximately 15-17 significant digits.
Which of the following variable names is INVALID in C?
A _myVar B myVar123 C 123myVar D my_Var
Variable names cannot start with a digit in C. Valid names must begin with a letter (a-z, A-Z) or underscore (_).
What will be the result of sizeof(int) on a typical 32-bit system?
A 2 bytes B 4 bytes C 8 bytes D Undefined
On 32-bit systems, int is typically 4 bytes (32 bits). However, the exact size is implementation-defined per C standard.
Which storage class variable is automatically initialized to 0 if not explicitly initialized?
A auto B register C static D extern
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?
A 4 bytes B 8 bytes C 16 bytes D Compiler defined
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?
A (int) 5.7 B int(5.7) C int <- 5.7 D 5.7 as int
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?
A No difference B signed: -128 to 127, unsigned: 0 to 255 C signed: 0 to 127, unsigned: -128 to 255 D signed: 0 to 256, unsigned: -128 to 128
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?
A volatile B static C const D restrict
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?
A Both are pointers to int B p is pointer to int, q is int C Both are int D p is int, q is pointer to int
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?
A Compilation error B Runtime error C The fractional part is silently truncated D The value is rounded
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?
A #define PI 3.14 B const float PI = 3.14; C PI = 3.14 (const); D constant float PI = 3.14;
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?
A 4 B 9 C 12 D 13
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:
A Main memory B CPU registers C Hard disk D Cache memory
register is a hint to compiler to store variable in CPU register for faster access. Compiler may ignore this if registers unavailable.