notebook/notes/c/declarations.md

7.9 KiB

title TARGET DECK FILE TAGS tags
Declarations Obsidian::STEM c
c

Overview

Signed Unsigned 32-bit 64-bit
signed char unsigned char 1 1
short unsigned short 2 2
int unsigned 4 4
long unsigned long 4 8
long long unsigned long long 8 8
char * - 4 8
float - 4 4
double - 8 8

Fixed width data integral types (e.g. int32_t) can be found by including <stdint.h>.

%%ANKI Cloze The {<stdint.h>} header file contains {fixed width data integral types}. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Basic What does the "width" of an integer type refer to? Back: The number of bits used to represent its value. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI What two variants does a C integral type declaration have? Back: Signed and unsigned. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016. END%%

%%ANKI What does it mean for an integer to be "signed"? Back: It can represent negative, zero, and positive values. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016. END%%

%%ANKI What does it mean for an integer to be "unsigned"? Back: It can only represent nonnegative values. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016. END%%

%%ANKI Basic How large is a word? Back: This is a machine-dependent value. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Basic What word sizes are typical nowadays? Back: 32- and 64-bit word sizes. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze char typically represents {1} byte(s) on a 64-bit platform. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze short typically represents {2} byte(s) on a 64-bit platform. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze int typically represents {4} bytes(s) on a 64-bit platform. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze unsigned typically represents {4} bytes(s) on a 64-bit platform. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze long typically represents {8} bytes(s) on a 64-bit platform. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze long long typically represents {8} bytes(s) on a 64-bit platform. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Basic What distinguishes long from long long? Back: long longs are guaranteed to be at least 64-bit wide. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Basic Why is there both a long and long long? Back: long longs are at least 64-bit wide, even on 32-bit platforms. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze char * typically represents {8} bytes(s) on a 64-bit platform. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze float typically represents {4} bytes(s) on a 64-bit platform. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze double typically represents {8} bytes(s) on a 64-bit platform. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Basic Is declaration int signed or unsigned? Back: Signed. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Basic How is declaration unsigned written more precisely? Back: unsigned int. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Basic Is declaration long signed or unsigned? Back: Signed. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Basic Is declaration char signed or unsigned? Back: Unknown. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze {1:float} has {2:4} byte precision whereas {2:double} has {1:8} byte precision. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

%%ANKI Cloze The C standard sets {1:lower bounds} on data type ranges, but does not set {1:upper bounds} (except with fixed-size types). Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

Pointers have the same size as the machine's word size since it should be able to refer to any virtual address.

%%ANKI Basic Why does a pointer's size match the machine's word size? Back: Because it should be able to refer to any virtual address. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.

END%%

References

  • Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.