Type modifiers change the size or sign of a variable's data type. They help you store data more efficiently or correctly.
Type modifiers in C
Introduction
Syntax
C
type_modifier data_type variable_name;
Type modifiers come before the base data type.
Common modifiers are signed, unsigned, short, and long.
Examples
C
unsigned int age;C
long int distance;
C
short int temperature;
C
signed char letter;Sample Program
This program shows how to declare variables with different type modifiers and prints their values.
C
#include <stdio.h> int main() { unsigned int positiveNumber = 300; signed int negativeNumber = -300; long int bigNumber = 1000000; short int smallNumber = 10; printf("Positive number: %u\n", positiveNumber); printf("Negative number: %d\n", negativeNumber); printf("Big number: %ld\n", bigNumber); printf("Small number: %d\n", smallNumber); return 0; }
Important Notes
Using 'unsigned' means the variable cannot hold negative values.
'long' and 'short' change the size of the variable, but exact sizes depend on the system.
Always match the correct format specifier in printf for the type modifier used.
Summary
Type modifiers adjust the size or sign of data types.
Common modifiers: signed, unsigned, short, long.
They help store data efficiently and correctly.
Practice
1. Which of the following type modifiers in C is used to store only non-negative values?
easy
Solution
Step 1: Understand the meaning of 'unsigned'
The 'unsigned' modifier means the variable can only hold zero or positive values, no negatives.Step 2: Compare with other modifiers
'signed' allows negative and positive values, 'short' and 'long' change size but not sign.Final Answer:
unsigned -> Option DQuick Check:
unsigned = non-negative only [OK]
Hint: Unsigned means no negative numbers allowed [OK]
Common Mistakes:
- Confusing 'signed' with 'unsigned'
- Thinking 'short' affects sign
- Assuming 'long' means unsigned
2. Which of the following is the correct way to declare a variable as a long unsigned integer in C?
easy
Solution
Step 1: Recall correct order of type modifiers
The standard order is 'unsigned long int' to declare a long unsigned integer.Step 2: Check syntax correctness
unsigned long int var; follows the correct order and syntax; others mix order incorrectly.Final Answer:
unsigned long int var; -> Option AQuick Check:
unsigned long int = correct order [OK]
Hint: Use 'unsigned long int' order for clarity [OK]
Common Mistakes:
- Mixing order of 'unsigned' and 'long'
- Placing 'int' before 'unsigned'
- Using invalid modifier order
3. What will be the output of the following C code?
unsigned short x = 65535;
unsigned short y = 1;
unsigned short z = x + y;
printf("%u", z);medium
Solution
Step 1: Understand the range of unsigned short
Unsigned short typically stores values from 0 to 65535 (16-bit).Step 2: Calculate the sum and check overflow
65535 + 1 = 65536, which exceeds max value, so it wraps around to 0.Final Answer:
0 -> Option AQuick Check:
Unsigned short overflow wraps to 0 [OK]
Hint: Unsigned short max is 65535; adding 1 wraps to 0 [OK]
Common Mistakes:
- Expecting 65536 as output (overflow ignored)
- Confusing signed and unsigned overflow
- Using wrong printf format specifier
4. Identify the error in this C declaration:
unsigned signed int num;
medium
Solution
Step 1: Understand modifier compatibility
'unsigned' and 'signed' are opposite modifiers and cannot be combined together.Step 2: Check declaration validity
Combining both causes a syntax error; variable name is present, so no missing name error.Final Answer:
Cannot combine 'unsigned' and 'signed' modifiers -> Option CQuick Check:
unsigned + signed = invalid [OK]
Hint: Don't mix 'unsigned' and 'signed' together [OK]
Common Mistakes:
- Thinking both can be combined
- Ignoring opposite meanings
- Assuming 'signed' is default and can be added
5. You want to store a large positive number that fits in 64 bits but never needs to be negative. Which type modifier combination is best in C?
hard
Solution
Step 1: Identify size and sign requirements
64 bits means 'long long' type; only positive means 'unsigned'.Step 2: Match modifiers to requirements
'unsigned long long int' fits large positive numbers without negatives.Final Answer:
unsigned long long int -> Option BQuick Check:
64-bit positive number = unsigned long long int [OK]
Hint: Use 'unsigned long long int' for large positive 64-bit numbers [OK]
Common Mistakes:
- Choosing signed type when negatives not needed
- Using 'short' which is too small
- Ignoring 'unsigned' for positive-only data
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
