char, short int, long int
(ev. unsigned)
float, double
struct, array
long int | 4 | -231 till 231-1 |
short int | 2 | -215 till 215-1 |
unsigned long int | 4 | 0 till 232-1 |
unsigned short int | 2 | 0 till 216-1 |
signed char | 1 | -128 till 127 |
unsigned char | 1 | 0 till 255 |
Typen int är normalt liktydigt med long eller short int (implementationsberoende)
Typen char är vanligen liktydigt med unsigned char
3, 8, -255
003, 010, -0377
-1.5, .26, 100., 0.57721566 1e10, 0.5e2, 1e-10
charchar är en heltalstyp och teckenkonstanter är
ett sätt att skriva små heltal (dvs av typen char!)Man kan således "räkna" direkt med tecken:
char toUpper(char c) {
/* Om c är en gemen så
returneras motsvarande VERSAL */
if ( c>='a' && c <='z' )
return c + 'A' - 'a';
else
return c;
}
ctype.h#include <stdio.h> int isalpha(int c); int isdigit(int c); int isalnum(int c); int isspace(int c); int isupper(int c); int islower(int c); int isprint(int c); int iscntrl(int c); int tolower(int c); int toupper(int c);Dessa funktioner kunde, med fördel, använts i flera av de ovanstående exemplen.
int main() {
char c;
for ( c = ' '; c<127; c++ )
printf( "%d \t %c \n", c, c );
return 0;
}
(Blanktecknet är det första tryckbara tecknet och ~ (126) det sista)
\a | alert | pip, pling eller motsvarande |
\b | backspace | Markören ett steg åt vänster |
\f | form feed | Markören till nästa sida |
\n | newline | Radbytestecken |
\r | carriage return | Skriver ett "vagnretur" |
\t | tabulator | Horisontell tabulator |
\v | verikal tab | Vertikal tabulator |
\\ | backslash | |
\' | single quote | apostrof |
\" | double quote | citationstecken |
\0 | null | ascii-värdet 0 |
\ddd | octal number | ddd är tre oktala siffror |
Exempel:
int i, j, k; float x, y; char c; short int p, q; unsigned short int r; unsigned char ch; int start = 0, stop = 10; char c=getchar();
+, -, *, / | alla aritmetiska typer |
% | (modulo) endast heltalstyper |
>, >=, <, <=
|
==, !=
|
&& | and |
|| | or |
! | not |
=
|
+=
|
-=
|
*=
|
/=
|
++ | både pre- och postfix form |
-- | både pre- och postfix form |
&, |, << m.fl. (se bok)
(typ) uttryck
Exempel:
y = power( (float) i, n );
printf för formaterad utmatning
printf( formatsträng, värde, värde, ... )Några formatspecifikationer:
%d | Heltalsvärde |
%c | Teckenvärde |
%f | Flyttalsvärde |
%s | Teckensträng |
%o | Oktalt värde |
%x | Hexadecimalt värde |
Specifikationerna förses med attribut för att specificera, fältbredd, antal decimaler, justering mm.
scanf för formaterad inläsning. Exempel:
int main() {
float x;
int n;
printf("Ge x och n: ");
scanf("%f %d", &x, &n );
printf( "%f upphöjt till %d är %f",
x, n, power(x,n) );
return 0;
}
if ( uttryck )
sats
if ( uttryck )
sats
else
sats
sats kan vara en godtycklig sats, t ex en ny villkorssats
eller en sammansatt sats.
switch ( uttryck ) {
case konstantuttryck : satser
case konstantuttryck : satser
case konstantuttryck : satser
default: satser
}
Obs: break måste användas för att lämna strukturen!
while ( uttryck )
sats
for ( uttr1; uttr2; uttr3 )
sats
do
sats
while ( uttryck )
typ namn( parameterlista ) {
variabeldeklarationer
satser
}
Funktionen lämnas genom return-satsen
return värde
void som anger att
den inte returnerar något värde
struct) men ej arrayer
int om inget
annat sägs
static)
typ namn( parameterlista );
typ namn( void );
int fak(int n) {
int i, prod=1;
for ( i=1; i<=n; i++ )
prod *= i;
return prod;
}
Deklareras med
typ arraynamn[storlek]
/* Läs 100 positiva flyttal och skriv ut
dem normerade */
int main() {
int i;
float x[100], max=0;
for ( i=0; i<=99; i++ ) {
scanf( "%f", &x[i] );
if ( x[i] > max )
max = x[i];
}
for ( i=0; i<=99; i++ )
printf( "%f", x[i]/max );
return 0;
}
char
string.h innehåller strängfunktioner
printf och scanf
int strlen( char s[] ) {
int n=0;
while ( s[n] != '\0' )
n++;
return n;
}
(Den typiske C-hackaren skriver funktionen mer kompakt)
string.hint strlen (char s[]); void strcpy (char s1[], char s2[]); void strncpy(char s1[], char s2[], int n); void strcat (char s1[], char s2[]); void strncat(char s1[], char s2[], int n); int strcmp (char s1[], char s2[]);(Lite förenkling av parametertyper och returvärden...)