1 / 24

Numeric types of C

Numeric types of C. Integers Signed and unsigned In a few different sizes 209 Floating point In different size 209.602. Integer types by size. char Holds single characters short Holds small numbers int The usual integer long When 2,000,000,000 isn’t enough.

Download Presentation

Numeric types of C

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. Numeric types of C • Integers • Signed and unsigned • In a few different sizes • 209 • Floating point • In different size • 209.602

  2. Integer types by size • char • Holds single characters • short • Holds small numbers • int • The usual integer • long • When 2,000,000,000 isn’t enough

  3. What you can say about size? • short is at least as big as char • int is at least as big as short • long is a least as bit as int • I.E., not much

  4. On my office PC

  5. On my web server

  6. Max and min – twos complement

  7. C Portability Problem • It’s hard to write portable programs • When you don’t know what an int will hold • More likely to be a problem with small chips • Such as embedded processors • sizeof(int) will give the size in bytes • But this is hard too use without macros

  8. C99 as problem and solution • C99 adds an additional integer type • long long • At least as bit as long • Provides bit-length specific integers • int32_t i ; • Declares a 32-bit integer • If <inttype.h> is included

  9. Unsigned • Useful when you know number is positive • As in counts • Gives you twice as many positive value • For 8 bit numbers which is it? • 00000001 > 11111111 • 00000001 < 11111111

  10. Floating point types by size • float • Usually IEEE 754 32-bit single precision • double • Usually IEEE 754 64-bit double precision • long double • Often same as double • Could be IEEE 754-2008 128-bit “quad” precision • Could be Intel 80-bit “extended” precision

  11. On my office PC

  12. Integer literals • Decimal • 209 • Octal • 0321 • Hexadecimal • 0xD1 • Suffixes • U for unsigned • L for long

  13. Floating point literals • With a dot but no exponent • 10.5, 1., .2 • With an exponent and possibly a dot • 2e20, .2e20, 2.e20, 2.2e20, 7e-15 • With possible suffixes • F for float • L for long

  14. Default argument promotionEvil in C • If a char or short is an argument to printf • It is promoted to an int • If a float is an argument to printf • It is promoted to a double • printf cannot tell signed from unsigned The above statements aren’t quite true, but they are good enough for now. In a later chapter, you’ll learn about prototypes and all of this may become a little clearer.

  15. Therefore … • printf “thinks” the following are identical • printf(” %c\n”, ’A’) ; • printf(” %c\n”, 65) ; • As are the following • printf(” %25.20f\n”, 3.1416f) ; • printf(” %25.20f\n”, 3.1416) ; • You may need to “tell” printf more or less than you think necessary

  16. However • Assume • int and long int are different • double and long double are different • Because • They often take up more space on the stack • Unless they are the same length • Which often is the case • Isn’t this confusing

  17. Conversion specifiers for integers

  18. Length modifiers for integers • Can proceed the integer conversion specifier • Except for %c • Only useful one is l, as in printf(“Big number is %ld\n”, 20000000000000L) ; • There is also largely unneeded h and hh • Prints the short and char part of an int

  19. Conversion specifiersfor floating point

  20. Length modifiers for floating point • Use L for long double as in printf(“Big number is %Lf\n”, 2e2009L) ;

  21. Input with scanf • To read numbers use scanf scanf(”%d”, &courseNumber) ; scanf(”%f”, &temperature) ; • Notice the & • It will be explained later in the course • It means “address of”

  22. Conversion specifiers for scanf %X is the same as %x %F, %e, %E, %g, %G are the same as %f

  23. Length modifiers for scanf

  24. Matching • scanf(”%d,%d”, &i, &j) ; • A comma must be between the numbers • scanf(”%d%%%d”, &i, &j) ; • A percent sign must be between the numbers

More Related