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



Download 1,38 Mb.
bet65/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   61   62   63   64   65   66   67   68   ...   437
Bog'liq
word1

int

Numl

=

22;







int

Num2

=

5;

//

27

int

addition = Numl + Num2;

int

subtraction = Numl - Num2;

//

17

int

multiplication = Numl * Num2;

//

110

int

division = Numl / Num2;

//

4

int

modulo

= Numl % Num2;

//

2

Оператор деления ( /) возвращает результат деления двух операндов. Однако в случае целых чисел результат не содержит десятичной части, поскольку целые числа по опреде­ лению не могут ее содержать. Оператор деления по модулю (%) возвращает только остаток деления и применим только к целочисленным значениям. Листинг 5.1 содержит простую программу, демонстрирующую выполнение арифметических действий с двумя введенны­ ми пользователем числами.


ЛИСТИНГ 5.1. Демонстрация арифметических операторов





  1. введенными пользователем целыми числами_________




    1. #include




    1. using namespace std;

  1. :




    1. int main()




    1. {

      5:

      cout

      «

      "Enter two integers:" « endl;

      6:

      int

      Numl

      = 0,Num2

      = 0;

  1. cin » Numl;




  1. cin » Num2;

    9:

    cout

    «

    Numl

    «

    it +

    и «

    Num2

    «

    I. =

    и «

    Numl

    + Num2

    «

    endl ;

    10:

    11:

    cout

    «

    Numl

    «

    к -

    и «

    Num2

    «

    и =

    и «

    Numl

    - Num2

    «

    endl ;

    12:

    cout

    «

    Numl

    «

    и ★ i «

    Num2

    «

    и =

    и «

    Numl

    Num2

    «

    endl;

    13:

    cout

    «

    Numl

    «

    и/и«

    Num2

    «

    и =

    «

    Numl

    / Num2

    «

    endl ;

    14:,

    cout

    «

    Numl

    «

    и%II«

    Num2

    «

    и =

    и «

    Numl

    % Num2

    «

    endl;

    15











































  2. return 0;







Результат


Enter two integers:


365
25


365 + 25 = 390


365 - 25 = 340


365 * 25 = 9125


365/25=14


365%25=15


Анализ



Большая часть программы говорит сама за себя. Интересней всего, вероятно, строка, использующая оператор деления по модулю %. Она возвращает остаток деления значения переменной Numl (365) на значение переменной Num2 (25).



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

93



Операторы инкремента (++) и декремента (— )

Иногда необходим инкремент (increment), или приращение, значения на единицу. Это особенно важно для переменных, контролирующ их циклы, где значение переменной должно увеличиваться или уменьшаться на единицу при каждом выполнении цикла.


Для решения этой задачи язык C++ предоставляет операторы ++ (инкремента) и — (декремента).

Синтаксис их использования следующий:





int

Numl

=

101;

//

Постфиксный

оператор

инкремента

int

Num2

= Numl++;

int

Num2

=

++Numl;

//

Префиксный

оператор

инкремента

int

Num2

= Numl--;

//

Постфиксный

оператор

декремента

int

Num2

=

--Numl;

//

Префиксный

оператор

декремента

Пример кода демонстрирует два разных способа применения операторов инкремента





  1. декремента: до и после операнда. Операторы, которые располагаются перед операндом, называются префиксными (prefix) операторами инкремента или декремента, а те, которые располагаются после, — постфиксными (postfix) операторами инкремента или декремента.



Что значит постфиксный и префиксный

Сначала следует понять различие между префиксом и постфиксом, а затем исполь­ зовать то, что нужно в данном случае. Результат выполнения постфиксных операторов заключается в том, что сначала 1-значение присваивается r-значению, а потом г-значение увеличивается или уменьшается. Это значит, что во всех случаях использования постфикс­ ного оператора значением переменной Num2 будет прежнее значение переменной Numl (т.е. то значение, которое она имела до операции инкремента или декремента).





    1. ействие префиксных операторов прямо противоположно: сначала изменяется г-значение, а затем оно присваивается 1-значению. В этих случаях переменные Num2 и

Numl имеют одинаковое значение. Листинг 5.2 демонстрирует результат выполнения пре­ фиксных и постфиксных операторов инкремента и декремента на примере целого числа.


ЛИСТИНГ 5.2. Различия между постфиксными и префиксными операторами______________





  1. #include




  1. using namespace std;


  1. int main()




  1. {

  2. int Mylnt = 101;



6: cout « "Start value of integer being operated: " << Mylnt



  1. endl;



7



  1. int PostFixInc = Mylnt++;




  1. cout « "Result of Postfix Increment = " << PostFixInc << endl;



10 cout « "After Postfix Increment, Mylnt = " « Mylnt « endl;
11

  1. Mylnt = 101; // Переустановка




  1. int PreFixInc = ++Mylnt;




  1. cout « "Result of Prefix Increment = " << PreFixInc << endl;




  1. cout << "After Prefix Increment, Mylnt = " << Mylnt << endl;

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




16:



  1. Mylnt = 101;




  1. int PostFixDec = Mylnt— ;




  1. cout « "Result of Postfix Decrement = " « PostFixDec « endl;



20: cout « "After Postfix Decrement, Mylnt = " « Mylnt « endl;
2 1 :

  1. Mylnt = 101;




  1. int PreFixDec =— Mylnt;




  1. cout « "Result of Prefix Decrement = " « PreFixDec « endl;




  1. cout « "After Prefix Decrement, Mylnt = " « Mylnt « endl;








  1. return 0;




  1. }



Результат


Start value of integer being operated: 101 Result of Postfix Increment = 101 After Postfix Increment, Mylnt = 102 Result of Prefix Increment = 102 After Prefix Increment, Mylnt = 102 Result of Postfix Decrement = 101 After Postfix Decrement, Mylnt = 100 Result of Prefix Decrement = 100 After Prefix Decrement, Mylnt = 100


Анализ

Результаты показывают, чем постфиксные операторы отличались от префиксных, при­ сваиваемые в строках 8 и 1 8 .1-значения содержат исходные значения целого числа, то, ка­ ким оно было до операций инкремента или декремента. Префиксные операторы в строках 13 и 23, напротив, присвоили результат инкремента или декремента. Это самое важное различие, о котором следует помнить, выбирая правильный тип оператора.





  1. следующих выражениях префиксные или постфиксные операторы никак не влияют на результат:



Mylnt++; // То же, что и ...


++Mylnt;

Дело в том, что здесь нет присвоения исходного значения и конечный результат в обо­ их случаях — увеличенное на единицу целое число.


Нередко приходится слышать о ситуациях, когда префиксные операторы инкре­ мента или декремента являются более предпочтительными с точки зрения про­ изводительности, т.е. ++Myint предпочтительней, чем Myint++.


Это правда, по крайней мере, теоретически, поскольку при постфиксных опера­ торах компилятор должен временно хранить исходное значение на случай его присвоения. Влияние на производительность в случае целых чисел незначи­ тельно, но в случае некоторых классов этот аргументе мог бы иметь смысл.


Использование операторов 95
Избегайте переполнения, обдуманно выбирая типы данных

Такие типов данных, как short, int, long, unsigned short, unsigned int, unsigned long и т.д., имеют ограниченную емкость для содержания чисел. Когда в ходе арифмети­ ческой операции вы превышаете определенный типом предел, происходит переполнение (overflow).


Возьмем, к примеру, тип unsigned short. Тип данных short использует 16 битов, а сле­ довательно, может содержать значения от 0 до 65535. Когда вы добавляете 1 к значению 65535, хранящемуся в переменной типа unsigned short, происходит переполнение и значение превращается в 0. Это очень похоже на спидометр автомобиля: в нем тоже про­ исходит механическое переполнение, когда он может отображать только пять цифр, а ав­ томобиль прошел 99 999 километров.





  1. данном случае тип unsigned short оказался бы неподходящим типом для такого счетчи­ ка. Для содержания чисел больше 65 535 следует использовать тип unsigned int.

  2. случае типа signed short допустимы целые числа в диапазоне от -32768 до 32767. Добавление 1 к числу 32767 в переменной типа signed integer зачастую дает в резуль­ тате самое большое отрицательное значение, но это уже зависит от компилятора.

Листинг 5.3 демонстрирует ошибки переполнения, которые можно по неосторожности получить при арифметических операциях.

ЛИСТИНГ 5.3. Ошибка переполнения у знаковых и беззнаковых целочисленных переменных






  1. Download 1,38 Mb.

    Do'stlaringiz bilan baham:
1   ...   61   62   63   64   65   66   67   68   ...   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