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.
What is the size of the double data type in most 64-bit systems?
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?
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?
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?
static variables are automatically initialized to 0 for numeric types and NULL for pointers if not explicitly initialized.
Advertisement
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.
What is true about the variable declared as 'extern int count;' inside a function?
extern is a declaration (not definition) that tells compiler the variable exists elsewhere in program. It provides global scope.
Consider a structure with int (4 bytes), char (1 byte), and double (8 bytes). What is the minimum size due to alignment requirements?
Due to structure padding/alignment, the size becomes 24 bytes (8-byte alignment for double). Members are padded to maintain alignment.
Which of the following statements about type qualifiers is INCORRECT?
restrict prevents pointer aliasing (not allows). It tells compiler that pointer is the only way to access that object.
What is the default data type of a floating-point constant in C?
In C, floating-point constants like 3.14 are treated as double by default. To specify float, you need to use 3.14f suffix.
What is the size of int data type on a 32-bit system according to C standard?
The C standard guarantees int is at least 2 bytes, but most 32-bit systems use 4 bytes. The exact size is implementation-dependent.
In the declaration 'int arr[10], *ptr;', which statement is correct?
The declaration uses comma separation. 'int arr[10]' declares an array of 10 integers, while '*ptr' declares a pointer to int.