Lecture on Integer Data Types: Short Data Type
Introduction
- Discussion on data types, specifically integer data type divided into classifications.
- Focus on "short" data type.
Short Data Type
- Stores integer values.
- Divided into two sub-types:
- Signed Short
- Unsigned Short
Signed vs Unsigned
- Signed Short: Stores both positive and negative values.
- Unsigned Short: Stores only positive values.
Memory Allocation
- Occupies 2 bytes (16 bits) of memory.
- Unsigned Short Value Range: 0 to 65,535.
- Calculated as 2^16 = 65,536 possible values, starting from 0.
- Signed Short Value Range: -32,768 to 32,767.
- Calculated by dividing the unsigned range by 2.
Declaring Short Variables in C
- Default declaration assumes "signed".
- Example:
short a;
or short int a;
- Explicit Signed Declaration:
signed short a;
or signed short int a;
- Explicit Unsigned Declaration:
unsigned short a;
or unsigned short int a;
Format Specifiers
- Signed Short:
%d
- Unsigned Short:
%u
- Purpose: Specify data format for reading and printing.
Example Programs
Simple Short Program
#include <stdion.h>
void main() {
short a = 10;
clrscr(); // Clear screen
printf("%d", a); // Print value
}
- The program declares a short variable
a
with value 10 and prints it.
Using Circles for Value Limits
- Signed Circle Values: Values range from -32,768 to 32,767.
- Unsigned Circle Values: Values range from 0 to 65,535.
Program with Value Exceeding Range
- Demonstrates how exceeding signed short range causes value cycling.
#include <stdio.h>
#include <conio.h>
void main() {
short x = 32769; // Exceeds maximum for signed short
clrscr();
printf("%d", x); // Outputs a negative value due to cycling
}
Handling Unsigned Values
- Demonstrates how unsigned short handles negative initialization.
#include <stdio.h>
#include <conio.h>
void main() {
unsigned short x = -4; // Exceeds range
clrscr();
printf("%u", x); // Outputs a large positive value
}
Complex Example
- Shows interaction of format specifiers and value limits.
#include <stdio.h>
#include <conio.h>
void main() {
unsigned short x = 65538;
printf("%u", x); // Outputs a wrapped around value
printf("%d", x); // Same output, different interpretation based on format
}
Common Misunderstandings
- Negative values assigned to unsigned types wrap around.
- C language does not issue compile-time errors for range violations.
Interview Insights
- Interviews may focus on complex behavior like variable wrapping and format specifier impacts.
Conclusion
- Understanding the behavior of short data types and format specifiers is crucial.
- Future sessions to cover remaining data types.