C Numeric Data Types
In this page:
integer_type variable_name = whole_number;
floating_type variable_name = decimal_number;
// integer_type: short, int, long, long long
// floating_type: float, double
Integer Types
C provides several integer types -- short, int, long, and long long -- each offering a different range of whole numbers, with int being the standard default choice for most everyday counting and arithmetic.
Example: Integer Types
// Include standard input/output (printf, scanf)
#include <stdio.h>
// Program execution starts in main()
int main() {
// Declare s and set it to 10
short s = 10;
// Declare i and set it to 1000
int i = 1000;
long l = 100000L;
long long ll = 10000000000LL;
// Print formatted text to the screen
printf("%hd %d %ld %lld", s, i, l, ll);
// Return 0 to signal that the program finished successfully
return 0;
}
Login to try C/C++/Java/PHP code in the editor
Floating-Point Types
Floating-point types, float and double, store numbers with a fractional part, with double offering roughly twice the precision of float at the cost of using more memory.
Example: Floating-Point Types
// Include standard input/output (printf, scanf)
#include <stdio.h>
// Program execution starts in main()
int main() {
// Declare f and set it to 3.14f
float f = 3.14f;
// Declare d and set it to 3.14159265358979
double d = 3.14159265358979;
// Print formatted text to the screen
printf("%.2f %.11f", f, d);
// Return 0 to signal that the program finished successfully
return 0;
}
Login to try C/C++/Java/PHP code in the editor
Choosing int vs float vs double
Choosing between int, float, and double comes down to whether a value is always a whole number, needs decimal precision with limited memory use, or needs the higher precision double provides for most general decimal math.
Example: Choosing int vs float vs double
// Include standard input/output (printf, scanf)
#include <stdio.h>
// Program execution starts in main()
int main() {
// Declare quantity and set it to 3
int quantity = 3;
// Declare price and set it to 19.99
double price = 19.99;
// Print formatted text to the screen
printf("Total: %.2f", quantity * price);
// Return 0 to signal that the program finished successfully
return 0;
}
Login to try C/C++/Java/PHP code in the editor
Number Ranges and Overflow
Every numeric type has a fixed range of representable values, and exceeding that range causes overflow, where the value silently wraps around to an unexpected result instead of raising an error.
Example: Number Ranges and Overflow
// Include standard input/output (printf, scanf)
#include <stdio.h>
// Program execution starts in main()
int main() {
// Declare maxVal and set it to 2147483647
int maxVal = 2147483647;
maxVal = maxVal + 1;
// Print formatted text to the screen
printf("%d", maxVal);
// Return 0 to signal that the program finished successfully
return 0;
}
Login to try C/C++/Java/PHP code in the editor
Numeric Literals
Numeric literals can be written in decimal, hexadecimal (with a 0x prefix), or octal (with a leading 0) form, and suffixes like L, U, or F tell the compiler which specific type to treat the literal as.
Example: Numeric Literals
// Include standard input/output (printf, scanf)
#include <stdio.h>
// Program execution starts in main()
int main() {
// Declare decimal and set it to 100
int decimal = 100;
// Declare hex and set it to 0x64
int hex = 0x64;
int octal = 0144;
// Print formatted text to the screen
printf("%d %d %d", decimal, hex, octal);
// Return 0 to signal that the program finished successfully
return 0;
}
Login to try C/C++/Java/PHP code in the editor
- Dividing two ints like
5 / 2and expecting 2.5, when integer division gives 2. - Overflowing an
int, such as adding 1 toINT_MAX, which is undefined behavior for signed types. - Using the wrong format specifier, such as
%dfor adouble, which prints garbage.
Chapter Quiz — Complete all 21 topics to unlock
0/21 topics done
Complete these topics first:
- C Introduction
- C History & Features
- C Environment Setup
- C First Program
- C Syntax & Structure
- C Statements
- C Comments
- C Keywords & Identifiers
- C Data Types
- C Character Data Type
- C Numeric Data Types
- C Decimal (Floating-Point) Numbers
- C sizeof Operator
- C Extended Data Types
- C Type Conversion
- C Booleans
- C Variables
- C Changing Variable Values
- C Multiple Variables
- C Constants
- C Fixed-Width Integers