C++ за 21 день седьмое издание


Numl += Num2; // после операции Numl содержит значение 27



Download 1,38 Mb.
bet73/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   69   70   71   72   73   74   75   76   ...   437
Bog'liq
word1

Numl += Num2; // после операции Numl содержит значение 27
106 ЗАНЯТИЕ 5. Команды, выражения и операторы

Это эквивалентно следующей строке кода:




Numl = Numl + Num2;

Таким образом, результат оператора += — это сумма этих двух операндов, присвоенная затем операнду слева (Numl). Краткий перечень составных операторов присвоения с объ­ яснением их работы приведен в табл. 5.6.




ТАБЛИЦА 5.в. Составные операторы присвоения



Оператор

Применение

Эквивалент




Присвоение с добавлением

Numl

+= Num2 ;

Numl = Numl + Num2;

Присвоение с вычитанием

Numl -= Num2 ;

Numl = Numl - Num2 ;

Присвоение с умножением

Numl

*= Num2;

Numl = Numl Num2 ;

Присвоение с делением

Numl

/= Num2 ;

Numl = Numl / Num2;

Присвоение с делением по модулю

Numl

%= Num2 ;

Numl = Numl % Num2 ;

Присвоение с побитовым сдвигом влево

Numl

«= = Num2;

Numl = Num *«

Num2 ;

Присвоение с побитовым сдвигом вправо

Numl

»== Num2;

Numl = Num :»

Num2 ;

Присвоение с побитовым AND

Numl

&= Num2;

Numl = Numl & Num2;

Присвоение с побитовым OR

Numl

1= Num2 ;

Numl

= Numl

1 Num2;

Присвоение с побитовым X0R

Numl

A = Num2;

Numl

= Numl

Num2;

Применение этих операторов демонстрирует листинг 5.10.




ЛИСТИНГ 5.10. Использование составных операторов присвоения для добавления, вычитания, деления и деления по модулю, а также побитовых операций сдвига, OR, AND и X0R



  1. #include




  1. using namespace std;







3 int main()

  1. /

4i

  1. cout «"Enter a number: " ;




  1. int Value = 0;




  1. cin »Valued-

O

О


9 Value + = 8;



  1. cout «"After + = 8, Value = " « Value « endl ;




  1. Value - = 2;




  1. cout «"After - = 2, Value = " « Value « endl ;




  1. Value / = 4;




  1. cout «"After / = 4, Value = " « Value « endl ;




  1. Value * = 4;




  1. cout «"After * = 4, Value = " « Value « endl ;




  1. Value % = 1000;




  1. cout «"After % = 1000, Value _ i « Value « endl;





  1. / / Примечание: далее присвоение происходит в пределах cout




  1. cout «"After « = 1, value = " « (Value « = 1) « endl;




  1. cout «"After » = 2 , value = " « (Value » = 2) « endl;








  1. cout « "After |= 0x55, value _ и « (Value |= 0x55) « endl




























Использование операторов

107

15:

cout

«

"After

Л=

0x55,

value

=

" «

(Value

A=

0x55)

«

endl;




16:

cout

«

"After

&=

OxOF,

value

=

" «

(Value

&=

OxOF)

«

endl;







  1. return 0;



19:}


Результат


Enter a number: 440


After += 8, Value = 448


After -= 2, Value = 446


After /= 4, Value = 111


After *= 4, Value = 444


After %= 1000, Value = 444


After « = 1, value = 888


After » = 2, value = 222


After |= 0x55, value = 223


After A= 0x55, value = 138


After &= OxOF, value = 10


Анализ


Обратите внимание, как последовательно изменяется значение переменной V a lu e


по мере применения в программе различных операторов присвоения. Каждая операция осуществляется с использованием переменной V alu e, а ее результат снова присваивается переменной V alue . Следовательно, в строке 9 введенное пользователем значение 440 до­ бавляется к 8, а результат, 448, снова присваивается переменной V alu e . При следующей операции в строке 11 из 448 вычитается 2, что дает значение 446, которое снова присваи­ вается переменной V alu e, и т.д.


Использование оператора sizeof для определения объема памяти, занятого переменной


Этот оператор возвращает объем памяти в байтах, использованной определенным ти­ пом или переменной. Оператор s i z e o f имеет следующий синтаксис:


sizeof(п ерем енная);





или


sizeof(тип);
ПРИМЕЧАНИЕ
Оператор sizeof (...) выглядит как вызов функции, но это не функция, а оператор. Этот оператор не может быть определен программистом, а следова­ тельно, не может быть перегружен.

Более подробная информация о собственных операторах приведена на заня­ тии 12, “Типы операторов и их перегрузка”.





Листинг 5.11 демонстрирует применение оператора s iz e o f для определения объе­ ма памяти, занятого массивом. Кроме того, можно вернуться к листингу 3.4 и проана­

108 ЗАНЯТИЕ 5. Команды, выражения и операторы


лизировать применение оператора s iz e o f для определения объема памяти, занятого пере­ менными наиболее распространенных типов.


ЛИСТИНГ 5.11. Использование оператора sizeof для определения количества

байтов, занятых массивом из 100 целых чисел и каждым его элементом__________________





  1. #include




  1. using namespace std;



2 :


3 : int main ()



  1. {




  1. cout « "Use sizeof of determine memory occupied by arrays"




    1. endl;




  1. int MyNumbers [100] = {0};

    7:

    cout

    «

    "Bytes

    occupied

    by an int: " « sizeof(int) « endl;

    8:

    9:

    cout

    «

    "Bytes

    occupied

    by arrayMyNumbers: "

    1. sizeof(MyNumbers) « endl;




  1. cout « "Bytes occupied by each element: "




    1. sizeof(MyNumbers[0]) « endl;

1 1 :

  1. return 0;




  1. }



Результат


Use sizeof of determine memory occupied by arrays


Bytes occupied by an int: 4


Bytes occupied by array MyNumbers: 400


Bytes occupied by each element: 4


Анализ


Программа демонстрирует, как оператор s iz e o f возвращает размер в байтах массива из 100 целых чисел, составляющий 400 байтов, а также что размер каждого его элемента составляет 4 байта.
Оператор s iz e o f может быть весьма полезен, когда необходимо динамически разме­ стить в памяти N объектов, особенно когда их тип создан вами самостоятельно. Вы ис­ пользовали бы результат выполнения оператора s iz e o f для определения объема памяти, занятого каждым объектом, а затем динамически зарезервировали бы для него память, используя оператор new.


Более подробная информация о динамическом распределении памяти приведена на за­ нятии 8, “Указатели и ссылки”.


Приоритет операторов


Возможно, вы помните из школьного курса, что арифметические операции имеют по­ рядок, в котором они должны выполняться в сложном арифметическом выражении.
В языке C++ используются такие операторы и выражения:



int MyNumber = 10 * 30 + 2 0 - 5 * 5 < < 2 ;

Использование операторов

109

Вопрос: какое значение будет содержать переменная MyNumber? Здесь нет места ника­ ким догадкам. Порядок выполнения различных операторов строго определен стандартом C++. Этот порядок определяется приоритетом операторов, приведенным в табл. 5.7.







ТАБЛИЦА 5.7. Приоритет операторов



  1. Название




  1. Область видимости




  1. Прямое и косвенное обращение к члену класса, вызов функ­ ции, постфиксный инкремент и декремент




  1. Префиксный инкремент и декремент, инверсия и не унарные “минус" и “плюс", получение адреса и ссылки, а также опера­ торы new, new [ ],delete, delete [ ],casting, sizeof ()




  1. Обращение к элементу по указателю




  1. Умножение, деление, деление по модулю




  1. Сложение, вычитание




  1. Сдвиг влево, сдвиг вправо




  1. Меньше, меньше или равно, больше, больше или равно




  1. Равно, не равно




  1. Побитовое AND




  1. Побитовое исключающее OR




  1. Побитовое OR




  1. Логическое A N D




  1. Логическое OR




  1. Троичный условный оператор




  1. Операторы присвоения




  1. Запятая

Оператор

. -> () ++ —


++—А !-+&* ()


^* _>*



  1. / % + - « »





Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   69   70   71   72   73   74   75   76   ...   437




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish