Operatory i nie tylko Zadanie 1. Podaj jakie wartości zostaną
Transkrypt
Operatory i nie tylko Zadanie 1. Podaj jakie wartości zostaną
Operatory i nie tylko Zadanie 1. Podaj jakie wartości zostaną wyświetlone przez program #include <iostream > using namespace std; int i = 10 ; //zmienna globalna int main() {int i=3; {int i=6; cout << i<<endl; // 6-wartość zmiennej lokalnej w bloku {} cout <<::i<<endl; //10 – wartosć zm. globalnej } cout <<i<<endl; // 3-wartość zmiennej lokalnej w f-cji main cout <<::i<<endl; //10 – wartosć zm. globalnej return 0; } / * Operat or zasi ęgu gl obal n ego. ::x j est nazw ą gl obal nej zmi enn ej x zadekl arow anej poza w szyst ki mi f unkcj ami i kl asami . Użyci e „ czt erokrop ka” j est koni eczne t yl ko w t edy, gdy nazw a (w naszym przypad ku x) j est w danym bl oku (f un kcj i ) nazw ą i nnej zmi ennej , l okal nej , kt óra wobe c t ego przesł oni ł a zmi enną gl obal ną o t ej samej nazw i e */ Zadanie 2. Podaj jakie wyniki zostaną w yświetlone w wyniku wykonania instrukcji /* Operat or przeci n kow y j est dw uargument ow y: po dw óch st ronach przeci nka dw a w yrażeni a w yr1 , w yr2 Dzi ał ani e j ego pol ega na: -obl i czeni u w yrażeni a w yr1 i zi gnorow ani u rezul t at u; - obl i cz eni u w yr aż eni a w yr2 ; j ego wart ość st aj e si ę wa rt ości ą c ał ego w yraż eni a. */ // Dl a op e ratora p rzyp i san i a wi ąz ani e j est pra we // prz ypi s ani e k=11 w yk on yw an e j est naj pi erw, a j ego w yn i k cz yl i // wa rt ość k po prz ypi s ani u (cz yl i 11) z ost ani e prz ypi san e // do z mi enn ej i i=k=11,i=i+15; cout << "i= "<<i<<" k="<<k<<endl; i=6; i=(k=11,i=i+15); cout << "i= "<<i<<" k="<<k<<endl; Odp: i= 26 i= 21 k=11 k=11 Zadanie 3. 1 Operatory i nie tylko Przyjrzyj się dokładnie co zostanie w yświetlone po wykonaniu instrukcji int j=101,i=4, k=101; cout << (j=i)<<endl; //4 - wynik podstawienia cout << (j==i)<<endl; //1 -true bo j=i=4 cout << (j==k)<<endl; //0 - false /* a=b -wykonanie przypisania polega na obliczeniu wartości prawej strony i umieszczeniu wyniku pod adresem l-wartości występuj ącej po stronie lewej . Prawa strona mówi co policz yć, lewa gdzie zapisać wynik. Wartością i type m całego wyrażenia prz ypisania j est wartość i t yp lewej strony po wykonaniu przyp isania. */ /* Wyrażenie ' a == b' ma wartość logiczną odpowiadającą na pytanie czy wartość a jest równa wartości b. Wyrażenie ' a != b' ma wartość logiczną odpowiadaj ącą na pytanie czy wartość a jest różna od wartości b. Wynikiem operacj i jest wartość logiczna true lub false . Wartości logiczne reprezentowane są w zasadzie przez wartości całkowite: wartość 0 jest równoważna false , a dowolna wartość niezerowa true. */ Zadanie 4. Co zostanie wyświetlone po w ykonaniu kolejno instrukcji //! negacja logiczna !0 =1, !1 = 0 int j=10,i=4, cout cout cout cout k=10; << !(j=i)<<endl; //0 bo !4 =0 << (j!=i)<<endl; // 0 bo false << !(j==k)<<endl; //1 bo true << !(j!=k)<<endl; //0 bo !true= false /*Ponadto ma my jeszcze 2 operator y logiczne: && koniunkcja i || alternatyw a Alternat ywa (suma logiczna) daje w ynik true, gd y choć jeden z argume ntów ma wartość true, natomiast koniunkcja (ilocz yn logiczn y) ma wartość true t ylko jeśli oba argument y są true. Koniunkcja i alternat ywa są skrótowe. Oznacza to, że praw y argument nie jest w ogóle obliczan y, jeśli po obliczeniu lewego w ynik jest już przesądzon y. Tak więc: dla ' &&' praw y argume nt nie będzie w ogóle obliczan y, jeśli lew y argume nt okazał się równ y false, a dla alternat yw y praw y argument nie będzie obliczan y, jeśli lew y okazał się true - całe w yr ażenie musi bowie m mi eć wted y wartość true niezależnie od wartości prawego argumentu. */ 2 Operatory i nie tylko Zadanie 5. W poniższym programie jedna instrukcja jest niepoprawna. Zaznacz ją jako komentarz i uzasadnij swoją odpowiedź. Następnie określ co zostanie wyświetlone przez poprawne instrukcje #include <iostream> using namespace std; int suma(int a, int b) {return a+b>0? a+b:a-b; } int main() { int k=4,m=-2; int c; cout<<suma(-4,9)<<endl; cout<<suma(k+m,m)<<endl; cout<<suma((k,m),11)<<endl; cout<<suma(k,m,11)<<endl; c=3,14; cout<<c<<endl; cout<<suma(c,m)<<endl; return 0; } Zadanie 6. Co zostanie wyświetlone po w ykonaniu kolejno instrukcji int j=10,i=4, k=10; cout <<(i = j++ )<<endl; //10 //zwiekszenie j dopiero po wykonaniu instr.przypisania cout << j<<endl; //11 cout << ++j<<endl;//12 cout << j<<endl;//12 cout<< i + k++ <<endl;//20 cout<< (++k)-- << endl; //12 cout<< k<<endl; //11 3