Temperatura w Ostrołęce


powered_by.png, 1 kB

ARTZI.NET arrow Programowanie arrow Opis C arrow Opis języka programowania C
Opis języka programowania C | Drukuj |  Email

Opis języka programowania C stworzony przez Piotra Różnickiego

 


"O tym przewodniku"
Ten przewodnik po strukturze języka C nie jest dokładnym opisem ani definicją standardu.
Ma on służyć jako szybka pomoc w trakcie programowania z użyciem języka C lub C++.
Przewodnik może być używany bez żadnej opłaty.
Autor nie udziela żadnych gwarancji dotyczących niezawodności , aktualności oraz prawdziwości informacji tu zamieszczonych.
Autor nie gwarantuje, że opis spełni wymagania użytkownika i jego używanie nie uszkodzi komputera użytkownika .
Opis można uzywać za darmo w dowolnej ilości kopii.
Rozpowszechnianie opisu jest dozwolone jednak powinno się o tym fakcie powiadomić autora.
Wszelkie dodatkowe informacje dostępne są pod emailowym adresem :
roznicki@figaro.ae.katowice.pl
Tekst powstał na podstawie tekstu jest Bruce M. Simpson dostępnego pod adresem email bsimpson@touchdwn.demon.co.uk

Typy danych
Słowa kluczowe
operatory
Funkcje odnoszące się do znaków
Funkcje matematyczne
Funkcje odnoszące się do ciągów
Komendy formatujące funkcji scanf()
Komendy formatujące funkcji printf() 
Przykłady użycia funkcji printf()
Stałe reprezentujące znaki specjalne w ciągachM
Komendy preprocesora
Struktury i wskaźniki

Podstawowe typy zmiennych


Typ

Rozmiar (bity)

Opis

int

32

całkowite

char

8

znakowe

short

16

krótkie całkowite

long

32

długie całkowite

float

32

zmiennoprzeinkowe pojedynczej precyzji

double

64

zmiennoprzeinkowe pojedwójnej precyzji

(Rozmiary podane zostały dla kompilatorów 32 bitowych)
W zależności od kompilatora rozmiary te mogą się różnić lub może być ich więcej

 

Przykład dla Borland C++ Builder
< tr> < tr> < tr> < tr> < tr> < tr> < tr> < tr> < tr> < tr> < tr>

Typ

Rozmiar (bitów)

Zakres

unsigned char

8 bitów

0 do 255

char

8 bitów

-128 do 127

short int

16 bitów

-32,768 do 32,767

unsigned int

32 bitów

0 do 4,294,967,295

int

32 bity

-2,147,483,648 do 2,147,483,647

unsigned long

32 bity

0 do 4,294,967,295

enum

16 bitów

-2,147,483,648 do 2,147,483,647

long

32 bity

-2,147,483,648 do 2,147,483,647

float

32 bity

3.4 x 10-38 do 3.4 x 10+38

double

64 bitów

1.7 x 10-308 do 1.7 x 10+308

long double

80 bitów

3.4 x 10-4932 do 1.1 x 10+4932


Operatory
Całkowite i arytmetyczne operatory zachowują się tak jak zwykle np.:
(2 + 2)*2 da wynik 8 a 2 + 2 *2 da wynik 6 . Reszta regół jest analogiczna z matematycznymi



Wywoływanie funkcji, operatory selekcji

Operator

Składnia

Opis

()

funcname()

Wywołanie funkcji

[]

arrayptr[]

Wywołanie tablicy

.

struct.member

Bezpośrednia selekcja członka

->

structptr->

Pośrednia selekcja członka


size=2 width="100%" align=center>


Operatory unarne

operator

Operacja

Operatory

Typ rezultatu

*

wskazywanie

wskaźnik do dowolnego typu

typ bazowy

&

adres

zmienna dowolnego typu

wskaźnik do typu

-

negacja

arytmetyczny

arytmetyczny

!

logiczna negacja

arytmetyczny albo wskaźnik

całkowity

~

uzupełnienie

liczba całkowita

int, long lub unsigned

++

inkrementacja

arytmetyczny albo ptr

arytmetyczny

--

dekrementacja

arytmetyczny albo ptr

arytmetyczny

(type)

zmiana typu

dowolny typ

określony typ

sizeof()

rozmiar

wyrażenie albo typ

unsigned

Uwaga: zmienne arytmetyczne są zwiększane o 1 a zmienne typu wskaźnikowego o ilość bajtów odpowiadającą wielkości obiektu wskazywanego przez wskaźnik.
Ważne jest miejsce operatora : ++cos najpierw zwiększy a cos++ zwiększy potem.;-)



Operatory arytmetyczne

Operator

Operacja

Operand

Typ rezultatu

*

mnożenie

arytmetyczny

arytmetyczny

/

dzielenie

arytmetyczny

arytmetyczny

%

modulo

liczba całkowita

liczba całkowita

+

dodawanie

arytmetyczny lub ptr

liczba całkowita lub ptr

-

odejmowanie

aritmetyczny lub ptr

liczba całkowita lub ptr

 


Bitowe operatory

Operator

Operacja

Operatory

Typ rezultatu

<< 

przesunięcie w lewo

liczba całkowita

taki sam jak operand

>> 

przesunięcie w prawo

liczba całkowita

taki sam jak operand

&

bitowe and

liczba całkowita

liczba całkowita

^

bitowe xor

liczba całkowita

liczba całkowita

|

bitowe or

liczba całkowita

liczba całkowita

Uwaga: 0 jest wstawiane do nowych bitów ( po przesunięciu) chyba ,że przesunięcie w prawo i liczba ze znakiem (SIGNED) - wtedy znak kopiuje się na nowe miejsce.



Operatory porównania

Operator

Operacja

Operatory

Typ rezultatu

miejszy niż

arytmetyczny lub ptr

liczba całkowita

większy niż

arytmetyczny lub ptr

liczba całkowita

<=

miejszy lub równy

arytmetyczny lub ptr

liczba całkowita

>=

większy lub równy

arytmetyczny lub ptr

liczba całkowita

==

równy

arytmetyczny lub ptr

liczba całkowita

!=

różny od

arytmetyczny lub ptr

liczba całkowita


 

Operatory logiczne

Operator

Operacja

Operatory

Typ rezultatu

&&

logiczne and

arytmetyczny lub ptr

liczba całkowita

||

logiczne or

arytmetyczny lub ptr

liczba całkowita

Drugi operand operatora logicznego jest liczony tylko jeśli to konieczne.



Operator warunkowy
Składnia
wyrażenie ? jeśli_true : jeśli_false
Uwagi
Wartość tego wyrażenia jest równa jeśli_true jeśli wyrażenie jest prawdą - w przeciwnym wypadku wartośc to jeśli_false.


Złożone operatory przypisania
Te operatory służą do skrócenia zapisu operacji np.:
a +=2 jest równoznaczne a = a +2

Operator

Operacja

Operatory

+=

dodawanie

arytmetyczny

-=

odejmowanie

arytmetyczny

*=

mnożenie

arytmetyczny

/=

dzielenie by

arytmetyczny

%=

modulo

liczba całkowita

>>=

przesunięcie bitów w prawo

liczba całkowita

<<=

przesunięcie bitów w lewo

liczba całkowita

&=

bitowe AND

liczba całkowita

^=

bitowe XOR

liczba całkowita

|=

bitowe lub

liczba całkowita




 Operator przecinkowy

Składnia
wyrażenie1, wyrażenie2
Uwaga:
Mie mylić z przecinkami używanymi w funkcjach ,definicjach i deklaracjach!
Wyrażenie1 jest obliczane pierwsze a typ wyniku jest jak typ wyrażenia2
Przykład:
z = (x=2,y=3,y++);
Wynikiem beda tu wartości x równe 2,y równe 4 oraz z równe 3(wartość z nie będzie równa 4 bo użyto y++ a nie ++y)

 



Asocjacja operatorów i kolejność
Operatory są wypisane w malejącym porządku.
LR oznacza operator obliczany od lewej do prawej a RL od prawej do lewej

Kierunek wykonywania

Operatory

 

 

LR

() [] -> .

RL

! ~ ++ -- - * & (type) sizeof

LR

* / %

LR

+ -

LR

<< >>

LR

< <= > >=

LR

== !=

LR

&

LR

^

LR

|

LR

&&

LR

||

RL

?

RL

= += -= *= /= %= &= ^= |= <<= >>=

LR

,

 


 

 

Relatywny koszt operacji

Operacja

Relatywny koszt

Standardowe IO (printf..)

1000

Trygonometryczne funkcje

500

Zmiennoprzecinkowe

100

Dzielenie liczby całkowitej

30

Mnożenie liczby całkowitej

20

Wywołanie funkcji

10

Odwołanie do tablicy

6

Bitowe przesunięcie

5

Dodawanie ,odejmowanie

5

Operacje ze wskaźnikiem

2

Bitowe AND / lub / NOT

1

Logiczne AND / lub / NOT

1

 



Struktury i relacje wskaźników
structure.item = (*structure_ptr).item = structure_ptr->item
*(znakowe_ptr) = znakowe_ptr[0]
*(znakowe_ptr + n) = znakowe_ptr[n]
*a[i] = wskazanie do i-tego obiektu a.
(*b)[i] = i-ty element tablicy wskazywanej przez b.

Przykład używania wskaźników i adresów :

int i = 1; j = 10; 
int* wski; // deklaracja zmiennej wski typu int* 
wski = &i; // teraz wski wskazuje na i. *wski==1 
j = *wski; // teraz j==1 

 



"Składnia wyrażenia 'switch'"
etykieta to możliwy wynik wyrażenia

        switch (wyrażenie)
 
        {
               etykieta1: wyrażenia-1
               etykieta2: wyrażenia-2
               etykietan: wyrażenia-n
               default-case: wyrażenia-defaultowe
        }

 



Składnia wyrażenia 'for' 
for (inicjacja wartości; warunek nie przerwania pętli; następna wartość) wyrażenie;



Składnia wyrażenia 'while' 
while ( wyrażenie-sprawdzane ) wyrażenie;



Składnia wyrażenia 'do..while' 
do wyrażenie while (wyrażenie-sprawdzane);
Uwaga
W tym przypadku wyrażenie jest obliczane po wykonaniu pętli.



Składnia definicji typu
typedef <type> <type-name>



Składnia wyliczeniowej deklaracji typu

        enum <tag>
        {
               nazwa1 [=wyrażenie stałe1],
               nazwa2 [=wyrażenie stałe2],
               ...
               nazwaN [=wyrażenie stałen]
        };

 



Składnia deklaracji struktury
Deklaracja struktury

        struct <tag>
 
        {
 
               typ1 nazwa1;
 
               typ2 nazwa2;
 
               ...
 
               typN nazwaN;
 
        };
 

Definicja struktury

        struct  [tag] |
               [{      typ-1 nazwa-1;
                       typ-2 nazwa-2;
                       ...    ...
                       typ-n nazwa-n;
               }]
               
;

 



Deklaracja unii

        union <tag>
        {
               komponent-1;
               komponent-2;
               ...
               komponent-n;
        }

 



Inicjalizacja

        var = <wartość początkowa>
        var = { <wartość początkowa-lista> }
        var = { <wartość początkowa-lista>, }
        var = "<sekwencja znaków>"

 



Funkcje
Definicja funkcji
<typ rezultatu> <nazwa funkcji>( )
{
<deklaracja typów,definicja zmiennych, deklaracje>
<wyrażenia>
}
Deklaracja funkcji
<typ rezultatu> <nazwa funkcji>(<definicja parametrów>);
Wywołanie funkcji
<nazwa funcji>(<argumenty>)



Znakowe stałe

Stała

ASCII

Opis

\n

LF

linefeed

\t

HT

horizontal tab

\v

VT

vertical tab

\b

BS

backspace

\r

CR

carriage return

\f

FF

formfeed

\a

BEL

alert

\\

\

backslash

\?

?

question mark

\'

'

single quote

\"

"

double quote

\ooo

ooo

octal number

\xhh

xhh

hexadecimal number

\0

NUL

NUL znakowe



Standardowe komendy preprocessora ANSI

komenda

Składnia

Opis

#define

identifier token string

define an identifier

#define

id (id, ...) token string

define a macro

#undef

identifier

undefine an identifier lub macro

#include "filename"

include file relative to current dir

 

#include <filename>

include file from include path

 

#include token-sequence

include ?

 

#if

constant-wyrażenie

if wyrażenie is true...

#ifdef

identifier

if identifier is defined...

#ifndef

identifier

if idnetifier is not defined...

#elif

constant-wyrażenie

else if wyrażenie is true...

#else

 

else...

#endif

 

terminate conditional construct

#line

constant "filename"

change line counter and filename

#line

constant

change line counter **

#error

token-sequence(opt)

cause compilation error

#pragma

token-sequence(opt)

compiler specific

#

 

no-op

 



Słowa zarezerwowane

        auto           double         int            struct
 
        break          else           long           switch
 
        case           enum           register       typedef
 
        char           extern         return         union
 
        const          float          short          unsigned
 
        continue       for            signed         void
 
        default        goto           sizeof         volatile
 
        do             if             static         while
 


Komendy formatujące scanf()

Komenda

Opis

Typ operanda

%d

dziesiętna liczba całkowita

int *

%i

liczba całkowita

int *

%o

ósemkowa liczba całkowita

int *

%u

dziesiętna liczba całkowita bez znaku

unsigned int *

%x

szesnastkowa liczba całkowita

int *

%c

znak

char *

%s

ciąg

char[] lub char *

%e,f,g

liczba zmiennoprzecinkowa

float *

%p

wskaźnik

void *

%%

znak %

n/a.

Uwaga: '%p' nie jest uwzględnione w standardzie ANSI.

Przykład programu 
#include
 
        void main(void)
        {
               int x;
               double y;
               char znak;
               printf( "Podaj jedna liczbe calkowita: " );
               scanf ( "%d"  ,  &x  );
               printf( "Podaj jedna liczbe rzeczywista i jeden znak: ");
               scanf ( "%lf  %c"  ,  &y ,  &znak  );
        }
 


Komendy formatujące dla printf()

komenda

opis

typ

%d,i

dziesiętna notacja

int

%ld

długa liczba całkowita dziesiętna

int

%o

ósemkowa bez znaku

int

%x,X

szesnastkowa bez znaku

int

%u

dziesiętna bez znaku

unsigned int

%c

znak

int lub char

%s

ciąg

char[] char *

%f

dziesiętna notacja

double lub float

%e,E

notacja naukowa

double lub float

%g,G

krótkie %e lub %f

double lub float

%p

wskaźnik

void *

%%

znak %

n/a

 



Przykłady użycia printf()

        %3d     wyświetli 3 cyfry wyrównane do prawej
 
        %3.0f   nie wyświetli przecinka i liczby po nim
 
        %3.1f   wyświetli jedną cyfrę po przecinku
 
        %.1f    wyświetli tylko cyfrę po przecinku
 
Formatowanie:
 
        :%10s:         :hello, world:
 
        :%-10s:        :hello, world:
 
        :%20s:         :        hello, world:
 
        :%-20s:        :hello, world        :
 
        :%20.10s:      :          hello, wor:
 
        :%-20.10s:     :hello, wor          :
 
        :%.10s:        :hello, wor:
Przykład programu:
 #include 

void main(void)
{
int x = 10;
long y = 20;
double s;
s = x + y;
printf ( "%s obliczen %d + %ld = %f" , "Wynik" , x , y , s );
}




Funkcje standardowe biblioteki math

Funkcja

Opis

sin(x)

sinus

cos(x)

kosinus

tan(x)

tangens

asin(x)

arcussinus

acos(x)

arcuscosinus

atan(x)

arcustangens

atan2(y,x)

arcustangens (x / y)

sinh(x)

sinus hiperboliczny

cosh(x)

kosinus hiperboliczny

tanh(x)

tangens hiperboliczny

exp(x)

funkcja wykładnicza

log(x)

logarytm naturalny

log10(x)

logarytm dziesiętny

pow(x,y)

x do potęgi y

sqrt(x)

pierwiastek kwadratowy z x

ceil(x)

najmniejsza liczba całkowita nie mniejsza niż x

floor(x)

największa liczba całkowita nie większa niż x

fabs(x)

wartość bazwzględna

fmod(x,y)

reszta z dzielenia x/y

 



Standardowe funkcje dla ciągów

Funkcja

Opis

strcat(s,t)

dopisz t do końca s

strncat(s,t,n)

dopisz n znakow t do końca s

strcmp(s,t)

<0 if(s<t), 0 if(s==t), >0 if(s>t)

strncmp(s,t,n)

porównuje tylko n pierwszych znaków

strcpy(s,t)

kopiuje t do s

strncpy(s,t,n)

kopiuje n znaków z t do s

strlen(s)

zwraca długość s

strchr(s,c)

zwraca wskaźnik do pierwszego c w s, albo NULL

strrchr(s,c)

zwraca wskaźnik do ostatniego c w s, albo NULL

 



Funkcje znakowe

Funkcja / Makro

Opis

isalpha(c)

czy c jest znakiem z alfabetu ?

isupper(c)

czy C jest duże ?

islower(c)

czy C jest małe ?

isdigit(c)

czy c jest cfrą [0..9] ?

isalnum(c)

czy c jest znakiem alfanumerycznym ?

isspace(c)

czy c jest separatorem (spacja, TAB, LF, FF, VT lub CR) ?

toupper(c)

zwraca c duże

tolower(c)

zwraca c małe

 



Pascal a C - reprezentacja zmiennych

Typ Pascalowy

Typ C

liczba całkowita

int

LONGINT

long

CHAR

int

BOOLEAN

char

Byte

Byte(struct), int(passed)

VAR Byte

int *

Handle

Handle

VAR Handle

Handle *

Ptr

Ptr

VAR Ptr

Ptr *

OSType, ResType

long

PACKED ARRAY[]

long

String255

Str255 lub char *

VAR String255

Str255 lub char *

StringPtr

StrPtr lub char *

VAR StringPtr

StrPtr * lub char *

Rect

Rect *

VAR Rect

Rect *

Point

Point

VAR Point

Point *

 
 
© 2008 ARTZI.NET Tomasz Zielinski :: Joomla! i Joomla! IE jest Wolnym Oprogramowaniem wydanym na licencji GNU/GPL.