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

Podobne dokumenty