📖 Scenario: You are working on a simple program that stores and displays information about a product's quantity and price. You need to use type modifiers to make sure the variables use the right amount of memory and represent the values correctly.
🎯 Goal: Build a C program that declares variables using type modifiers unsigned and long, assigns values, and prints them correctly.
📋 What You'll Learn
Declare an unsigned int variable called quantity and assign it the value 150
Declare a long int variable called price and assign it the value 50000
Declare an unsigned long int variable called total_cost
Calculate total_cost as quantity multiplied by price
Print the values of quantity, price, and total_cost using printf
💡 Why This Matters
🌍 Real World
Type modifiers help programmers use memory efficiently and avoid errors when working with numbers that have different ranges, such as quantities that cannot be negative or very large prices.
💼 Career
Understanding type modifiers is important for writing safe and efficient C programs, especially in embedded systems, systems programming, and performance-critical applications.
Progress0 / 4 steps
1
Declare variables with type modifiers
Declare an unsigned int variable called quantity and assign it the value 150. Also declare a long int variable called price and assign it the value 50000.
C
Hint
Use unsigned int quantity = 150; and long int price = 50000; inside main().
2
Declare total_cost variable
Declare an unsigned long int variable called total_cost inside main() to store the total cost.
C
Hint
Use unsigned long int total_cost; to declare the variable.
3
Calculate total_cost
Calculate the total cost by multiplying quantity and price, and assign the result to total_cost.
C
Hint
Use total_cost = quantity * price; to calculate the total cost.
4
Print the values
Use printf to print the values of quantity, price, and total_cost in this exact format: Quantity: 150 Price: 50000 Total cost: 7500000
C
Hint
Use printf("Quantity: %u\n", quantity);, printf("Price: %ld\n", price);, and printf("Total cost: %lu\n", total_cost);.
Practice
(1/5)
1. Which of the following type modifiers in C is used to store only non-negative values?
easy
A. short
B. signed
C. long
D. unsigned
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 D
Quick 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
A. unsigned long int var;
B. int long unsigned var;
C. int unsigned long var;
D. unsigned int long var;
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 A
Quick 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
A. 0
B. 65536
C. 1
D. 65535
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 A
Quick 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
A. Missing variable name
B. Should use 'long' instead of 'signed'
C. Cannot combine 'unsigned' and 'signed' modifiers
D. No error, valid declaration
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 C
Quick 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
A. short unsigned int
B. unsigned long long int
C. long int
D. signed long long int
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 B
Quick 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 unknownstrongwhile earning +1 Grip toward your certificate.