Title: Fundamental Data Types
1Fundamental Data Types
2Declaration
- All variables must be declared before being used.
- Tells the compiler to set aside an appropriate
amount of space in memory to hold values
associated with variables. - Enables the compiler to perform operations using
the declared variables.
3Basic Data Types
- char character
- int integer
- float floating-point
- double double floating-point
- void valueless
4Modifying the Basic Types
- Type modifier
- signed unsigned long short
- When a type modifier is used by itself, then int
is assumed. - Modifier Same As
- signed signed int
- unsigned unsigned int
- long long int
- short short int
- The char type can be modified
- char signed char unsigned char
-
5Data Type char
- Have Seen Chars are treated as small integers
conversely small ints are treated as chars. - char c a
- printf (c, c 1) b
- printf (d, c 2) 99
- Each char variable stored in 1 Byte 8 Bits
- 27 26 25 24 23 22 21
20 - 128 64 32 16 8 4 2
1 - a
0
0
0
0
1
1
0
1
6- String of binary digits are called bit strings.
- A bit string is interpreted as a binary number.
bnbn-1b2b1b0 - 0 1 1 0 0 0 0 1 a
- This bit string has the value
- 1?26 1?25 1?20 97
7- 3 types
- 1) char 2) unsigned char 3) signed char
- Each uses 1 Byte.
- Typically char is equivalent to either signed or
unsigned char. - Signed char -128 to 127
- Unsigned char 0 to 255
8Data Type int
- INTEGERS Include the natural counting numbers
and their negatives. - INTEGRAL DATA TYPES
- int short long unsigned
9- The magnitude of the number that an int variable
can hold depends on ___________? -
- The range, u, of values
- 2wordsize-1 ? u ? 2wordsize-1-1
- 2 Byte word -32 Thousand To 32
Thousand - -215, -2151, , -3, -2, -1, 0, 1, 2, 3, ,
215-1 - 4 Byte word -2 Billion To 2 Billion
- -231, -2311, , -3, -2, -1, 0, 1, 2, 3, ,
231-1
word size(bits) of the machine is machine
dependent
10- Integer overflow
- Value too large for defined Storage Location.
- Typically program continues to run but incorrect
results. - The programmer must strive at all times to avoid
integer overflow.
11 Types short, long, unsigned
- short - used where conserving storage is a
concern (usually 2 Bytes). - -32 Thousand To 32 Thousand
- -215, -2151, , -3, -2, -1, 0, 1, 2, 3, ,
215-1 - long - needed for larger integers (usually 4
- bytes).
- -2 Billion To 2 Billion
- -231, -2311, , -3, -2, -1, 0, 1, 2, 3, ,
231-1
12- Unsigned - no sign bit, same number bytes as int.
-
- The range, u, of values
- 0 ? u ? 2wordsize-1
- 2 Byte word 0 To 64 Thousand
- 0, 1, 2, 3, , 216-1
- 4 Byte word 0 To 4 Billion
- 0, 1, 2, 3, , 232-1
13- Suffix
- u - 20u
- l 20l
- ul - 20ul
- (case not significant)
- IF no suffix with constant - system will choose
the first of int - long - unsigned long - That can hold the value.
14The Floating Types
- float double long double
- Hold Real Values.
- Suffixes for constants
- f or F float 3.7 F
- l or L long double 3.7 L
- Any unsuffixed floating constant is of type
double (working type).
15- Notation exponential decimal
-
- Must have Exponent or Dec pt or Both.
- 1.234567e5 123456.7
- 1.234567e-3 0.001234567
- 0e0 correct 0.0
- .e0 wrong
- May not contain any blanks or special
characters. - Typical Storage Float lt Double
16- Precision The number of significant decimal
- digits that floating value
carries. - Range Limits of largest smallest
possible - values that can be in a
variable of that - type.
- Float 4 Bytes - about 6 decimal places of
- accuracy- single precision.
- Double 8 Bytes - about 15 decimal places
- of accuracy- double precision.
-
17Internal Representation
- FLOAT
-
- 01 8 9 31
- SEEEEEEEE FFFFFFFF
- DOUBLE
- 01 11 12
63 - SEEEEEEEEEEE FFFFFFFFFFF
-
18- Float
- Precision 6 significant digits.
- Range 10-38 to 1038
- 0.d1d2d3d4d5d6 ? 10n
- di is a significant digit , N is range.
-
- Double
- Precision 15 significant digits (252 ? 1015)
- Range 10-308 to 10308 (2-2048 to 22047)
- 0.123451234512345 ? 103 (15 sig. digits)
19- Note
- 1. Not all Real numbers are exactly
- representable in binary memory.
- 2. Floating Arithmetic ops, unlike integer
- arithmetic, may not be exact.
-
20Compile-Time Operator sizeof
- Unary operator used to find the number of Bytes
needed to store an object. - sizeof(object)
-
- Object
- Data type int , float,
- Expression a b
-
- Array
- Will
cover -
later - Structure
21- Assuming that integers are 4 bytes and doubles
are 8 bytes.
double f printf("d ",sizeof (f)) 8
printf(''d", sizeof(int)) 4
22- Sizeof primarily helps to generate portable code
that depends upon the size of the built-in data
types.
/ Write 6 integers to a disk file. /void put_re
c(int rec6, FILE fp) int len
len write(fp, rec, sizeof(int)6) if(len ! 1
) printf(''Write Error")0
23- sizeof(char) 1
- sizeof(short) ? sizeof(int)
- ? sizeof(long)
- sizeof(signed) sizeof(unsigned)
- sizeof(int)
- sizeof(float) ? sizeof(double)
- ? sizeof(long double)
24Conversions
- When constants and variables of different types
are mixed in an expression, the compiler converts
all operands to the type of the largest operand-
Called Type Promotion. - First, all char and short values are
automatically elevated to int. Called integral
promotion. - int int int
- short short int
- Arithmetic Conversion (See pg. 217)
25char ch int i float f double d result (ch /
i) (f d) (f i) int
double float int
double float
double
26Casts
- Casts - Explicit conversions.
- (type) expression
-
- If i is int
- (float) i will change expression value to
- float, i is not changed.
(float) i/2
27- Apply to an Expression
- (float) (c 3)
- Cannot apply to an Assignment
- (int) f 3 illegal
- As an unary operator, a cast has the same
precedence as any other unary operator. - (float) i 3 ((float) i) 3
28/ print i and i/2 with fractions / int main(void
) int i for(il ilt100 i)
printf(''d // 2 is f\n", i, (float) i /2)
return 0
29- General forms
- (int) char expression- ordinal value of char
expression - (char) int expression- character with the
ordinal value of int expression - (int) float expression- truncates the float
expression - (float) int expression- converts int to float
-
- (double) float exp- converts float to
double