diff options
author | Tobias Klauser <tklauser@distanz.ch> | 2008-01-27 11:37:44 +0100 |
---|---|---|
committer | Tobias Klauser <tklauser@xenon.tklauser.home> | 2008-01-27 11:37:44 +0100 |
commit | 7e0f021a9aec35fd8e6725e87e3313b101d26f5e (patch) | |
tree | b1cacc4b24393f517aeb4610e9e1021f954307a8 /reference/C/CONCEPT/data_types.html |
Initial import (2.0.2-6)2.0.2-6
Diffstat (limited to 'reference/C/CONCEPT/data_types.html')
-rw-r--r-- | reference/C/CONCEPT/data_types.html | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/reference/C/CONCEPT/data_types.html b/reference/C/CONCEPT/data_types.html new file mode 100644 index 0000000..1c32515 --- /dev/null +++ b/reference/C/CONCEPT/data_types.html @@ -0,0 +1,218 @@ +<title>C Data types</title> +<body bgcolor="#ffffcc"> +<hr> +<center> +<h1>C Data types.</h1> +</center> +<hr> +<p> + +<h2>Variable definition</h2> +C has a concept of '<i>data types</i>' which are used to +<a href="../glossary.html#definition">define</a> a variable +before its use. <p> +The definition of a variable will assign storage for the variable and +define the type of data that will be held in the location.<p> +So what data types are available? +<p> +<table border=1 bgcolor=ivory width=80%> +<tr align=center> +<td><a href="#int">int</a> +<td><a href="#float">float</a> +<td><a href="#double">double</a> +<td><a href="#char">char</a> +<td><A HREF="../SYNTAX/void.html">void</A> +<td><A HREF="../SYNTAX/enum.html">enum</A> +</table> +<p> +Please note that there is not a boolean data type. C does not have the +traditional view about logical comparison, but thats another story.<p> +<font color="brown"> +Recent C++ compilers do have a <a href="../../CPLUSPLUS/SYNTAX/bool.html">boolean</a> datatype. +<p> +</font> +<hr> +<h2><a name="int">int - data type</h2> +<b>int</b> is used to define integer numbers. +<p> +<center> +<table border=1 width="80%" bgcolor="ivory"> +<tr><td> +<pre> + + { + int Count; + Count = 5; + } +</pre> +</td></tr></table> +</center> +<p> +<hr> +<h2><a name="float">float - data type</h2> +<b>float</b> is used to define floating point numbers. +<p> +<center> +<table border=1 width="80%" bgcolor="ivory"> +<tr><td> +<pre> + + { + float Miles; + Miles = 5.6; + } +</pre> +</td></tr></table> +</center> +<p> +<hr> +<h2><a name="double">double - data type</h2> +<b>double</b> is used to define BIG floating point numbers. It reserves twice +the storage for the number. On PCs this is likely to be 8 bytes. +<p> +<center> +<table border=1 width="80%" bgcolor="ivory"> +<tr><td> +<pre> + + { + double Atoms; + Atoms = 2500000; + } +</pre> +</td></tr></table> +</center> +<p> +<hr> +<h2><a name="char">char - data type</h2> +<b>char</b> defines characters. +<p> +<center> +<table border=1 width="80%" bgcolor="ivory"> +<tr><td> +<pre> + + { + char Letter; + Letter = 'x'; + } +</pre> +</td></tr></table> +</center> +<p> +<a name="modifier"> +<hr> +<h2>Modifiers</h2> +The three data types above have the following modifiers. +<p> +<ul> +<li>short +<li>long +<li>signed +<li>unsigned +</ul> + +The modifiers define the amount of storage allocated to the variable. +The amount of storage allocated is not cast in stone. ANSI has the +following rules:<p> +<p> +<center> +<table border=1 width="80%" bgcolor="ivory"> +<tr><td> +<pre> + + short int <= int <= long int + float <= double <= long double +</pre> +</td></tr></table> +</center> +<p> +What this means is that a 'short int' should assign less than or the same +amount of storage as an 'int' and the 'int' should be less or the same bytes +than a 'long int'. What this means in the real world is: +<p> +<table border=2 width="100%" bgcolor="ivory"> +<tr><td> +<pre> + + Type Bytes Bits Range +</pre> +</td></tr> +<tr><td> +<pre> + + short int 2 16 -16,384 -> +16,383 (16kb) + unsigned short int 2 16 0 -> +32,767 (32Kb) + unsigned int 4 16 0 -> +4,294,967,295 ( 4Gb) + int 4 32 -2,147,483,648 -> +2,147,483,647 ( 2Gb) + long int 4 32 -2,147,483,648 -> +2,147,483,647 ( 2Gb) + signed char 1 8 -128 -> +127 + unsigned char 1 8 0 -> +255 + float 4 32 + double 8 64 + long double 12 96 +</pre> +</td></tr></table> +<p> +These figures only apply to todays generation of PCs. Mainframes and +midrange machines could use different figures, but would still comply +with the rule above.<p> +You can find out how much storage is allocated to a data type by using +the <a href="../SYNTAX/sizeof.html">sizeof</a> operator. +<a name="qualifier"> +<hr> +<h2>Qualifiers</h2> +<p> +<ul> +<li><a href="../SYNTAX/const.html">const</a> +<li><a href="../SYNTAX/volatile.html">volatile</a> +</ul> + +The <i>const</i> qualifier is used to tell C that the variable value can not +change after initialisation.<p> + + const float pi=3.14159; + +<p> +<i>pi</i> cannot be changed at a later time within the program.<p> +Another way to define constants is with the +<a href="../SYNTAX/define_preprocessor.html">#define</a> preprocessor which +has the advantage that it does not use any storage (but who counts bytes + these days?).<p> +<hr> +<h2>See also:</h2> +<a href="type_conv.html">Data type conversion</a> +<p> +<a href="storage_class.html">Storage classes.</a> +<p> +<a href="cast.html">cast</a> +<p> +<a href="../SYNTAX/typedef.html">typedef</a> keyword. + +<hr> +<p> +<center> +<table border="2" width="80%" bgcolor="ivory"> +<tr align=center> +<td width=25%> +<a href="../cref.html">Top</a> +</td><td width=25%> +<a href="../master_index.html">Master Index</a> +</td><td width=25%> +<a href="../SYNTAX/keywords.html">Keywords</a> +</td><td width=25%> +<a href="../FUNCTIONS/funcref.htm">Functions</a> +</td> +</tr> +</table> +</center> +<p> + +<hr> +<address>Martin Leslie +<script language="JavaScript"> +<!-- // +document.write(document.lastModified); +// --> +</script> +</address> |