1 / 31

Simple Data Types

Simple Data Types. Built-In and User Defined. Chapter 10. Built-In Simple Types. Simple (or "atomic") Each value is indivisible, a single entity Examples int, char, float NOT simple types strings, arrays, structs. Characteristics of Simple Types.

rona
Download Presentation

Simple Data Types

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Simple Data Types Built-In and User Defined Chapter 10

  2. Built-In Simple Types • Simple (or "atomic") • Each value is indivisible, a single entity • Examples • int, char, float • NOT simple types • strings, arrays, structs

  3. Characteristics of Simple Types • An object of a given type uses a specific number of bytes • sizeof( ) function will give how many • int => 2 bytes • float => 4 bytes (on our Borland C++) • An object of a simple type has a range of values • low to high • range is limited by size allocated to the type

  4. Integral Types • Include • char, short, int, long • can be signed or unsigned • signed integer stored in 2 bytes • range is -32768 … 32767 • Constants can be specified in • decimal, octal, hex • normally in decimal

  5. Floating Point Types • Stored in scientific notation • Include • float, double, long double • Float stored in 8 bytes • 5 - 6 significant digits • range  3.4 E  38

  6. Assignment Operators & Expressions • Assignment operator = • Syntax : variable = expression; • Statement has • a value of the expression • value stored in variable location • Value previously stored in variable is now wiped out

  7. Combined Assignment Operators • Considera += 5; // same as a = a + 5; • Similar results with-= *= /= %= • The symbol += is considered a binary operator • syntax requires a variable on the left • an expression on the right

  8. Increment & Decrement Operators • a++; // a unary operator which increments a by 1same as a = a + 1; or a += 1; • Similar results with -- • ++ and -- work only on variables … not constants • Consider cout << a++; and cout << ++a; • post increment prints, then increments • pre-increment increments first, then prints

  9. Bitwise Operators • Operators <<, >> , & , and | • Used for manipulating individual bits within memory • << and >> for shifting bits • Most of what we do will use && and || for logical AND and OR

  10. The Cast Operator • Wen mixing data types in expressions, implicit type casting occurs • Example int x; float f;Consider x = f;Versus f = x; • Text suggests explicit type castingx = (int)f; // use the type in ( ) f = float(x); // use the type as a function

  11. The sizeof Operator • A unary operator • yields size (in bytes) of some variable or data type • almost acts as a function • cout << sizeof (part_struct); • Often used for arrays or structs where you need to specify number of bytes to be read in or sent to a file

  12. The Selection Operator ? : • A trinary operator -- requires three operands • Exampleamt = (x < 5) ? y : z; • If x < 5 then amt gets value stored in yotherwise gets value stored in z

  13. Operator Precedence • Similar to algebraic precedence • Parentheses, unary, mult, div, addn, subt • Note page A1 Appendix B • Note also that some are L-> R, others are R-> L:

  14. Character Data • Char is actual considered a subset of int • uses 1 byte of memory • Since it is subset of int, it can store numbers or characterschar c1, c2;c1 = 12;c2 = 'A' // Both are legal

  15. Character Sets • External representation => what you see printed on screen or printer • Internal representation => bit form for storing the data in the computer memory • Most machines we encounter will use ASCII character set • Other machines use EBCDIC • Appendix D, pg A9 has examples of both

  16. C++ char Constants • Single printable character enclosed by single quotes'A' '7' '$' • can be letters, numerals, or symbols • Control characters (non printable characters) used to control output'\n' for newline (same as endl)'\f' for form feed'\t' for tab'\a' for beep

  17. Comparing Characters • Use comparison operators< == >= etc. • Consider if (ch >= 'a' && ch <= 'z') ...This checks to see if ch is in the lower case characters • Equivalent is if (islower (ch)) … • found in ctype.h • Check out character-testing library functions in Appendix C, pgs A2-A4

  18. Convert Digit Characters to Integers • Possible to do arithmetic with characters • they are basically, integers • Examplechar ch;cin >> ch;num = ch - '0';

  19. Converting Lowercase to Uppercase • From ctype.h header file, use functions providedch = toupper (ch);ch = tolower(ch): • Change only made if ch "needs" to be changed • if it is already uppercase, toupper( ) does nothing

  20. Representing Floating Point Numbers • Precision of 5 or 6 significant digits • Represented internally in scientific notationFour bytes will store • sign bit for the number • 5 or 6 significant digits • sign bit for the power •  38 range for the power

  21. Arithmetic with Floating Point Numbers • May lose accuracy due to round off error • especially when combining very large with very small numbers • Warnings • don't use floats to control loops • don't compare floats for equality, rather compare for closenessif ( abs (a - b) < 0.0001) …

  22. Implementation of Float on a Computer Significant digits: from 1st nonzero digit on left to last non zero digit on right Precision: max number of significant digits 1.200000000000345 • Example: 1.2345E-4 Representational Error:The arithmetic error when precision of true results greater than precision for machine

  23. Implementation of Float on a Computer • Underflow • results of calculation too small to be represented1.3E10 + 4.5E-10 • Overflow • value of calculation too large to be stored5.6E20 * 7.8E30 • C++ does not define results when this occurs, usually garbage values

  24. The Typedef Statement • Syntax:typedef existing_type_name new_type_name; • Example:typedef int Boolean; • Does not really create a new type • is a valuable tool for writing self-documenting programs

  25. Enumerated Types • Possible to create a new type by simply listing (enumerating) the constants which make up the type • Example:enum daysOfWeek (SUN, MON, TUE, WED, THU, FRI, SAT);daysOfWeek today, tomorrow, work_day;work_day = MON; • C++ represents these internally as numbers (0 .. 6 for our example)

  26. Enumerated Types • Incrementing variables of an enumerated type • Do NOT use workaday += 1; NOR today++; • Instead, use explicit type conversiontoday = daysOfWeek (today + 1);

  27. Enumerated Types • Comparison • normal, OK • in order of the enumeration definition • I/O • generally not possible to do directly • can be sort of done, indirectly • Used primarily for program control, branching, looping • Possible to have functions return an enumerated type

  28. Named and Anonymous Data Types • Named Type • user defined type • declaration includes typedef • As with daysOfWeek or Boolean • Anonymous Type • does not have an associated typeenum (MILD, MEDIUM, HOT) salsa_sizzle; • variable declared without typedef

  29. User-Written Header Files • For your collection of handy identifiers • type such as our Boolean type definition • use #include "bool.h" • note use of " " rather than < > • Tells the computer to go looking at the logged directory for bool.h file and include/insert it into the source code.

  30. Type Coercion in Expressions Expression result is of type int • If two operands are of different types • one is temporarily "promoted" or "widened" to match the data type of the otherint x = 5;float f = 1.234, amt = + f; • Another example: • char or short operands promoted to intint x = 5 + 'Q';

  31. Type Coercion in Assignments x | 3 Memory • Can result in "demotion" or "narrowing" • Assigning a float to an integer variable int x = 3.456; • decimal portion of float is lost • This loss of data can be considered a problem or a feature!

More Related