Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Fundamental Data Types. 2 Declaration All variables must be declared before being used. –Tells the compiler to set aside an appropriate amount of space.

Similar presentations


Presentation on theme: "1 Fundamental Data Types. 2 Declaration All variables must be declared before being used. –Tells the compiler to set aside an appropriate amount of space."— Presentation transcript:

1 1 Fundamental Data Types

2 2 Declaration 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.

3 3 Basic Data Types charcharacter intinteger floatfloating-point doubledouble floating-point voidvalueless

4 4 Modifying the Basic Types Type modifier: signed unsigned longshort When a type modifier is used by itself, then int is assumed. ModifierSame As signed signed int unsignedunsigned int longlong int shortshort int The char type can be modified: char signed char unsigned char

5 5 Data 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: 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 a 00001101

6 6 String of binary digits are called bit strings. A bit string is interpreted as a binary number. b n b n-1 …… b 2 b 1 b 0 0 1 1 0 0 0 0 1a This bit string has the value 1  2 6 + 1  2 5 + 1  2 0 = 97

7 7 3 types: 1) char2) 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

8 8 INTEGERS : Include the natural counting numbers and their negatives. INTEGRAL DATA TYPES: int short long unsigned Data Type int

9 9 The magnitude of the number that an int variable can hold depends on ___________? The range, u, of values: 2 wordsize-1  u  2 wordsize-1 -1 2 Byte word ~ -32 Thousand To +32 Thousand -2 15, -2 15 +1, …, -3, -2, -1, 0, 1, 2, 3, …, 2 15 -1 4 Byte word ~ -2 Billion To+2 Billion -2 31, -2 31 +1, …, -3, -2, -1, 0, 1, 2, 3, …, 2 31 -1 word size(bits) of the machine is machine dependent

10 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 11 Types short, long, unsigned short - used where conserving storage is a concern (usually 2 Bytes). -32 Thousand To +32 Thousand -2 15, -2 15 +1, …, -3, -2, -1, 0, 1, 2, 3, …, 2 15 -1 long - needed for larger integers (usually 4 bytes). -2 Billion To+2 Billion -2 31, -2 31 +1, …, -3, -2, -1, 0, 1, 2, 3, …, 2 31 -1

12 12 Unsigned - no sign bit, same number bytes as int. The range, u, of values: 0  u  2 wordsize -1 2 Byte word ~ 0 To +64 Thousand 0, 1, 2, 3, …, 2 16 -1 4 Byte word ~ 0 To +4 Billion 0, 1, 2, 3, …, 2 32 -1

13 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.

14 14 floatdouble long double Hold Real Values. Suffixes for constants f or Ffloat3.7 F l or Llong double 3.7 L Any unsuffixed floating constant is of type double (working type). The Floating Types

15 15 Notation: exponentialdecimal 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 < Double

16 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.

17 17 Internal Representation FLOAT: 01 8 9 31 SEEEEEEEE FFFFFF…FF DOUBLE: 01 11 12 63 SEEEEEEEEEEE FFFFFFFF…FFF

18 18 Float: Precision: 6 significant digits. Range: 10 -38 to 10 +38 0.d 1 d 2 d 3 d 4 d 5 d 6  10 n d i is a significant digit, N is range. Double: Precision: 15 significant digits (2 52  10 15 ) Range: 10 -308 to 10 +308 (2 -2048 to 2 +2047 ) 0.123451234512345  10 3 (15 sig. digits)

19 19 Note: 1. Not all Real numbers are exactly representable in binary memory. 2. Floating Arithmetic ops, unlike integer arithmetic, may not be exact.

20 20 Unary operator used to find the number of Bytes needed to store an object. sizeof(object) Object –Data typeint, float, … –Expressiona + b Array Will cover later Structure Compile-Time Operator sizeof

21 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 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_rec(int rec[6], FILE *fp) { int len; len = write(fp, rec, sizeof(int)*6); if(len != 1) printf(''Write Error"); }0

23 23 sizeof(char) = 1 sizeof(short)  sizeof(int)  sizeof(long) sizeof(signed) = sizeof(unsigned) = sizeof(int) sizeof(float)  sizeof(double)  sizeof(long double)

24 24 Conversions 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)

25 25 char ch; int i; float f; double d; result= (ch / i) + (f * d) – (f + i); int double float double

26 26 Casts - Explicit conversions. (type) expression If i is int: (float) i will change expression value to float, i is not changed. Casts (float) i/2

27 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 28 /* print i and i/2 with fractions */ int main(void) { int i; for(i=l; i<=100; ++i) printf(''%d // 2 is: %f\n", i, (float) i /2); return 0; }

29 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


Download ppt "1 Fundamental Data Types. 2 Declaration All variables must be declared before being used. –Tells the compiler to set aside an appropriate amount of space."

Similar presentations


Ads by Google