CSC161 2010F Imperative Problem Solving
[Skip to Body]
Primary:
[Front Door]
[Schedule]
-
[Academic Honesty]
[Instructions]
Current:
[Outline]
[EBoard]
-
[Assignment]
[Lab]
Groupings:
[EBoards]
[Assignments]
[Examples]
[Handouts]
[Labs]
[Outlines]
Related Courses:
[CSC161 2010S (Walker)]
[CSC161 2009F (Coahran)]
Misc:
[SamR]
[ISO]
[GNU Coding Standards]
Summary: We explore basics of types in C.
Prerequisites: Familiarity with basic Linux commands. Ability to use an editor. Ability to compile C files.
a. Log in to your MathLAN workstation. (Of course, you've probably already done that if you're reading this laboratory.)
b. Open a terminal window into which you can type commands.
c. Create a directory for this lab. (I'd suggest something like
~/Courses/CSC161/Types/
, but it's up to you.)
d. In that directory, create a file called Makefile
that
contains the following line.
CFLAGS=-Wall
a. Create your own copy of the Hello World
program, storing it in
the file hello.c
.
b. Confirm that you can compile the program use make
.
c. Confirm that you can check the program using splint
.
Using <limits.h>
(documented on page 257 of K&R),
find the various interesting limits on integer-like types. A typical
line of your program will look something like the following.
printf ("CHAR_BIT %12d\n", CHAR_BIT);
Determine experimentally, what happens when
For example, to explore the assignment of a long to a short, you might write
long l; short s; ... l = SHRT_MAX + 5; s = l; printf ("Long: %ld\n", l); printf ("Short: %d\n", s);
Consider the following code:
enum values { ALPHA, BETA, GAMMA }; int main () { int i; enum values v; i = BETA; v = 23; }
a. What do you expect the compiler to do if you attempt to compile this
code? (Assume that you're using -Wall
.
b. Check your answer experimentally.
c. What do you expect splint
to report for this code?
d. Check your answer experimentlaly.
e. What value do you expect i
to have when you print it out?
f. Check your answer experimentally.
Predict the results of each of the following and then check your answers experimentally. (Note that we will explore why you get these results when we talk about binary representation.)
Assume that we've declared i
as an integer variable.
a.
i = INT_MIN; --i; printf ("i = %d\n", i);
b.
i = INT_MAX; ++i; printf ("i = %d\n", i);
c.
i = -31; i = abs (i); printf ("i = %d\n", i);
d.
i = INT_MIN; i = abs (i); printf ("i = %d\n", i);
e.
i = INT_MAX / 4; printf ("i = %d\n", i);
f.
i = INT_MAX / 4; i = i*5; printf ("i = %d\n", i);
Sunday, 5 September 2010 [Samuel A. Rebelsky]
Friday, 10 September 2010 [Samuel A. Rebelsky]
[Skip to Body]
Primary:
[Front Door]
[Schedule]
-
[Academic Honesty]
[Instructions]
Current:
[Outline]
[EBoard]
-
[Assignment]
[Lab]
Groupings:
[EBoards]
[Assignments]
[Examples]
[Handouts]
[Labs]
[Outlines]
Related Courses:
[CSC161 2010S (Walker)]
[CSC161 2009F (Coahran)]
Misc:
[SamR]
[ISO]
[GNU Coding Standards]
Disclaimer:
I usually create these pages on the fly
, which means that I rarely
proofread them and they may contain bad grammar and incorrect details.
It also means that I tend to update them regularly (see the history for
more details). Feel free to contact me with any suggestions for changes.
This document was generated by
Siteweaver on Fri Sep 10 11:45:15 2010.
The source to the document was last modified on Fri Sep 10 11:45:12 2010.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CSC161/2010F/Labs/types-lab.html
.
A PDF version of this document may be found at
http://www.cs.grinnell.edu/~rebelsky/Courses/CSC161/2010F/Labs/type-lab.pdf