FLOATING POINT
mozna zapisywac
.4 = 0.4
4. = 4.0
scientific notation
3E8 - 3* 10^8
the exponent (the value after the “E”)
has to be an integer.
the base (the value in front of the “E”)
may or may not be an integer.
OPERATORY
dzielenie przez 0 błąd kompilacji
dzielenie przez zmienna ktora zawiera 0, kompilator przepusci
unary - jednoargumentowy np j = - i
binary - dwuargumentowy
ternary - trójargumentowy
% - reszta z dzielenia
1%2 - wynik 1 nie 0 !
jeśli taki sam priorytet, binding direction ma znaczenie
2*3%5 tu najpierw mnożenie czyli 6%5 = 1 i 1 reszty
nawiasy parentheses zmieniają kolejność
a++; rownoznaczne z a=a+1;
The “++” is called the increment operator.
The “--” is called the decrement operator.
Variable++ post-increment operator
++Variable pre-increment operator
Variable-- post-decrement operator
--Variable pre-decrement operator
i=1;
j=++i; //oba będą miały wartość 2
i = 4;
j = 2 * i++; /j=8 (2*4) a wartość i zwiększa się do 5
i = 2 * --j; /najpierw zmniejszamy j do 7 mnożymy przez 2 - wynik 14 zapisany w i
Kolejność operacji:
0)lista[], wywołanie metody (), -> (wskaźnik->pole)
1) rzutowanie (typ)wartość, jednoargumentowe jak ++ -- + negacje ~ !, new,&,sizeof
2) * / %
3) dodawanie i odejmowanie
4)przesunięcia bitowe << >>
5) porównania < <= > >=
6) porównania == !=
7) logika bitowa & ^ |
8) logika logiczna && ||
9) instrukcja warunkowa ? :
10) = przypisanie, i jego odmiany += -+ *= /= %=
skróty:
i*=2; i=i*2;
j-=(a+b+c); j=j-(a+b+c);
Character type
We can define a “word” as a string of characters
pojedynczy znak
char Character='a'; znak, jednak jak przypiszemy do int to wpisze kod asci
ewentualnie
Charakter=65; czyli 10 kod asci
Literały:
Character: this is not a literal; it’s probably a variable name; when you look at it, you cannot guess what value is currently assigned to that variable;
'A': this is a literal; when you look at it you can immediately guess its value; you even know that it’s a literal of the char type;
100: this is a literal, too (of the int type);
100.0: this is another literal, this time of a floating point type;
i + 100: this is a combination of a variable and a literal joined together with the + operator; this structure is called an expression.
\ escape character pozwala wpisać \ np Character='\\';
\n - nowa linia
\r - powrot do poczatku lini
\0 - null
po \ mozna wpisywać wartości osemkowe 0-7 i będą zamieniane na dziesietne asci
np:
Character='\47'; 47 to 39 dziesiętnie a kod asci tej liczby to \
można wymusić notację 16tkową
Character='\x27';
co ważne można:
char Char;
Char = 'A';
Char += 32; zamieni na znak o kodzie asci wiekszym o 32
Char -= ' '; zmniejszy kod asci o wartość kodu asci spacji
TYPY DANYCH I KONTROLA PRZEPŁYWU
= is an assignment operator
== is the question “are these values equal?”
== is a binary operator with left-side binding. It needs two arguments and checks if they’re equal.
== ma niski priorytet więc a==2*b jest rownoznaczne z a==(2*b)
!= - exclamation equal, również binarny
Przykład:
int Answer, Value1, Value2;
Answer = Value1 >= Value2; jeśli prawda przypisze 1, jeśli nie 0;
Przykład warunku:
if(SheepCounter >= 120){
MakeABed();
TakeAShower();
SleepAndDream();
}
INPUT OUTPUT
puts - pozwala wyswietlac tylko stringi, nie uda mu sie wyswietlic zmiennych, dlatego uzywa sie
printf("to jest tekst");
ze zmienna, korzstamy ze specifier %d
printf("zmienna a wynosi: %d",a);
%d - decimal (%i)
%x - hexadecimal
%o - octal
%c -character
%f - floating
%% -%
Przykład
i = 31;
printf(”%d %x %o”,i,i,i);
wyswietli w 3 postaciach:
31 1F 37 /ale uwaga nie dotyczy jeśli do zmiennej int damy %f !!!
co ciekawe
char c="a";
printf("%d",c); /wyswietli asci znaku a
jeśli więcej specifier niż zmiennych błąd, odwrotnie też
znak konca lini \n
printf(”This is phrase #1.\nThis is phrase #2.\n”);
INPUT
scanf("%d",&zmienna); /&wskazuje na adres (dla stringow %s bez &)
pierwiastkowanie:
#include <math.h>
float value,squareroot;
squareroot = sqrt(value);
ZAD:
c=('z'-'a'); wynik 25 (tak samo duże litery),
c=('a'-'A'); wynik 32, asci spacji to 32 więc 'a' - ' spacja ' da wynik 'A'