home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 257_01 / chap4.txt < prev    next >
Text File  |  1988-03-30  |  33KB  |  718 lines

  1.  
  2.                  Chapter 4 - Assignment & Logical compares
  3.  
  4.  
  5.                        INTEGER ASSIGNMENT STATEMENTS
  6.  
  7.              Load the file INTASIGN.C and display it for an  example
  8.         of  assignment statements.   Three variables are defined for
  9.         use  in the program and the rest of the program is merely  a
  10.         series of illustrations of various assignments.   The  first
  11.         two  lines  of  the assignment statements  assign  numerical
  12.         values  to "a" and "b",  and the next five lines  illustrate
  13.         the  five  basic arithmetic functions and how to  use  them.
  14.         The  fifth is the modulo operator and gives the remainder if
  15.         the two variables were divided.   It can only be applied  to
  16.         "int"  or  "char"  type  variables,   and  of  course  "int"
  17.         extensions such as "long",  "short",  etc.  Following these,
  18.         there  are two lines illustrating how to combine some of the
  19.         variables  in  some complex math expressions.   All  of  the
  20.         above examples should require no comment except to say  that
  21.         none  of  the equations are meant to be particularly  useful
  22.         except  as illustrations.  The "char" type variable will  be
  23.         defined in the description of the next example program.
  24.  
  25.              The  expressions  in  lines 17  and  18  are  perfectly
  26.         acceptable  as given, but we will see later in this  chapter
  27.         that  there is another way to write these for  more  compact
  28.         code.
  29.  
  30.              This leaves us with the last two lines which may appear
  31.         to  you  as being very strange.   The C compiler  scans  the
  32.         assignment  statement from right to left,  (which may seem a
  33.         bit odd since we do not read that way),  resulting in a very
  34.         useful construct,  namely the one given here.   The compiler
  35.         finds the value 20, assigns it to "c", then continues to the
  36.         left finding that the latest result of a calculation  should
  37.         be  assigned to "b".   Thinking that the latest  calculation
  38.         resulted in a 20,  it assigns it to "b" also,  and continues
  39.         the leftward scan assigning the value 20 to "a" also.   This
  40.         is a very useful construct when you are initializing a group
  41.         of  variables.   The last statement illustrates that  it  is
  42.         possible  to actually do some calculations to arrive at  the
  43.         value  which  will be assigned to all three  variables.   In
  44.         fact,  the rightmost expression can contain variables,  even
  45.         "a", "b", & "c".
  46.  
  47.              The  program has no output, so compiling and  executing
  48.         this  program  will be very uninteresting.  Since  you  have
  49.         already  learned how to display some integer  results  using
  50.         the "printf" function, it would be to your advantage to  add
  51.         some output statements to this program to see if the various
  52.         statements do what you think they should do.
  53.  
  54.              This would be a good time for a preliminary  definition
  55.         of  a  rule to be followed in C.   The data definitions  are
  56.  
  57.  
  58.                                   Page 20
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                  Chapter 4 - Assignment & Logical compares
  69.  
  70.  
  71.         always given before any executable statements in any program
  72.         block.   This is why the variables are defined first in this
  73.         program and in every C program.  If you try to define a  new
  74.         variable  after  executing  some  statements,  the  Turbo  C
  75.         compiler, and every other C compiler will issue an error.
  76.  
  77.                            ADDITIONAL DATA TYPES
  78.  
  79.              Loading and editing MORTYPES.C will illustrate how some
  80.         additional  data  types can be used.   Once  again  we  have
  81.         defined  a  few integer type variables which you  should  be
  82.         fairly  familiar  with  by now,  but we have added  two  new
  83.         types, the "char", and the "float".
  84.  
  85.              The  "char"  type  of data is nearly the  same  as  the
  86.         integer  except that it can only be assigned values  between
  87.         -128 to 127, since it is stored in only one byte of  memory.
  88.         The "char" type of data is usually used for ASCII data, more
  89.         commonly  known  as  text.  The text  you  are  reading  was
  90.         originally written on a computer with a word processor  that
  91.         stored the words in the computer one character per byte.  In
  92.         contrast,  the integer data type is stored in two  bytes  of
  93.         computer memory on microcomputers using Turbo C.
  94.  
  95.                               DATA TYPE MIXING
  96.  
  97.              It  would be profitable at this time to discuss the way
  98.         C handles the two types "char" and "int".  Most functions in
  99.         C  that are designed to operate with integer type  variables
  100.         will work equally well with character type variables because
  101.         they  are a form of an integer variable.   Those  functions,
  102.         when called on to use a "char" type variable,  will actually
  103.         promote  the "char" data into integer data before using  it.
  104.         For this reason, it is possible to mix "char" and "int" type
  105.         variables in nearly any way you desire.   The compiler  will
  106.         not get confused,  but you might.  It is good not to rely on
  107.         this too much, but to carefully use only the proper types of
  108.         data where they should be used.
  109.  
  110.               The second new data type is the "float" type of  data,
  111.         commonly  called floating point data.  This is a  data  type
  112.         which  usually  has a very large range, a  large  number  of
  113.         significant digits, and a large number of computer words are
  114.         required  to store it.  The "float" data type has a  decimal
  115.         point  associated with it and, in Turbo C, has an  allowable
  116.         range of from 3.4E-38 to 3.4E+38, and is composed of about 7
  117.         significant digits.
  118.  
  119.                        HOW TO USE THE NEW DATA TYPES
  120.  
  121.              The  first three lines of the program assign values  to
  122.  
  123.  
  124.                                   Page 21
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.                  Chapter 4 - Assignment & Logical compares
  135.  
  136.  
  137.         all nine of the defined variables so we can manipulate  some
  138.         of the data between the different types.
  139.  
  140.              Since,  as  mentioned above,  a "char" data type is  in
  141.         reality  an "integer" data type,  no special  considerations
  142.         need be taken to promote a "char" to an "int",  and a "char"
  143.         type data field can be assigned to an "int" variable.   When
  144.         going the other way, there is no standard, so you may simply
  145.         get garbage if the value of the integer variable is  outside
  146.         the  range of the "char" type variable.   It will  translate
  147.         correctly if the value is within the range of -128 to 127.
  148.  
  149.              The   third   line   illustrates  the   simplicity   of
  150.         translating an integer into a "float",  simply assign it the
  151.         new  value  and the system will do  the  proper  conversion.
  152.         When  going  the  other  way  however,  there  is  an  added
  153.         complication.   Since  there may be a fractional part of the
  154.         floating  point number,  the system must decide what  to  do
  155.         with it.  By definitions , it will truncate it.
  156.  
  157.              This program produces no output, and we haven't covered
  158.         a way to print out "char" and "float" type variables, so you
  159.         can't  really  get  in  to this program and  play  with  the
  160.         results, but the next program will cover this for you.
  161.  
  162.              Compile  and  run  this program, then go  back  to  the
  163.         Edit/Message  screen (by pressing any key) and  observe  the
  164.         message  window.   Notice  that there  are  several  warning
  165.         messages telling you that 6 variables were assigned a  value
  166.         and  never  used.   These  warning  messages  are  for  your
  167.         benefit,  so  it would pay you to keep a close  eye  on  the
  168.         message window when writing and debugging a program