it-place.net > Уроци > C-Cplusplus
Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Основни структури за управление на изчислителния процес
  1. Основни структури -1
  2. Основни структури -2
  3. Основни структури -3
  4. Основни структури -4
     
Автор  eminem (05.02.2005 15:44)  съобщение до автора
Погледнат  3627 пъти  добави към любими
Оценка  добави коментар
Гласове  1  изпрати на приятел
Коментари  (1)  абонирай се за C-Cplusplus
    Страница 1 / 4

 



Oператор за присвояване

Това е един от най-важните оператори на езика. Вече многократно го използвахме, а също в глава 2 описахме неговите синтаксис и семантика.  В тази глава ще го разгледаме по-подробно. Ще напомним неговите синтаксис и семантика.
Синтаксис
<променлива> = <израз>;
където
- <променлива> е идентификатор, дефиниран вече като променлива,
- <израз> е израз от тип, съвместим с типа на <променлива>.
Семантика
Намира се стойността на <израз>. Ако тя е от тип, различен от типа на <променлива>, конвертира се, ако е възможно, до него и се записва в именуваната с <променлива> памет.
    Забележки:
• Ако <променлива> е от тип bool, <израз> може да бъде от тип bool или от който и да е числов тип.
• Ако <променлива> е от тип double, всички числови типове, а също типът bool, могат да са типове на <израз>.
• Ако <променлива> е от тип float, типовете float, short, unsiged short и bool, могат да са типове на <израз>. Ако <израз> е от тип int,  unsigned int или double, присвояването може да се извърши със загуба на точност. Компилаторът предупреждава за това.
• Ако <променлива> е от тип int, типовете int, long int, short int и bool, могат да са типове на <израз>. В този случай ако <израз> е от тип double или float, дробната част на стойността на <израз> ще бъде отрязана и ако полученото цяло е извън множеството от стойности на типа int, ще се получи случаен резултат. Компилаторът издава предупреждение за това.
• Ако <променлива> е от тип short int, типовете short int и bool, могат да са типове на <израз>. В противен случай се извършват преобразувания, които водят до загуба на точност или даже до случайни резултати. Много компилатори не предупреждават за това.

Ще отбележим, че в рамките на дефиницията на една функция не са възможни две дефиниции на една и съща променлива, но на една и съща променлива може да й бъдат присвоявани многократно различни стойности.
Пример: Не са допустими
CODE
1
2
3
4
5
6
7
8
9
10
11
12
13

double a = 1.5;

double a = a + 5.1;

но са допустими присвояванията:
    …
double a = 1.5;
    …
   
a = a + 34.5;
    …
   
a = 0.5 + sin(a);
    …
В езика C++ са въведени някои съкратени форми на оператора за присвояване. Например, заради честото използване на оператора:
a = a + 1;
той съкратено се означава с
a++;
   Въведено е също и съкращението a-- на оператора a = a-1;
В същност ++ и -- са реализирани като постфиксни унарни оператори увеличаващи съответно намаляващи аргумента си с 1. Приоритетът им е един и същ с този на унарните оператори +, - и !.
Забележка: От оператора ++, за добавяне на 1, идва името на езика C++ - вариант на езика C, към който са добавени много подобрения и нови черти.
Допълнения: 1. Операторът за присвояване
<променлива> = <израз>;
съдържа оператора =, реализиран като дясноасоциативен инфиксен аритметично-логически оператор с приоритет по-нисък от този на дизюнкцията ||. Това позволява на <променлива> = <израз>; да се гледа като на израз от тип – типа на <променлива> и стойност – стойността на <израз>, ако е <израз> от типа на <променлива> или стойността на <израз>, преобразувана до типа на <променлива>, ако <променлива> и <израз> не са от един и същ тип.
    Пример: Програмата
CODE
1
2
3
4
5
6
7
#include <iostream.h>
int main()
{
int a;
 
double  b = 3.2342;
 
cout << (a = b) << "n";
 
return 0;
}
е допустима. Резултът от изпълнението й е 3, като компилаторът издава предупреждение за загуба на информация при преобразуването от тип double в тип int. Изразът a = b е от тип int и има стойност 3. Ограждането му в скоби е необходимо заради по-ниския приоритет на = от този на <<.
    2. Ако е в сила дефиницията:
    CODE
1
int x, y, z;
допустим е операторът:
    CODE
1
x = y = 5;
Тъй като = е дясноасоциативен, отначало променливата y се свързва с 5, което е и стойността на израза y = 5. След това x се свързва с 5, което пък е стойността на целия израз.
    Някои компилатори издават предупреждение при тази употреба на оператора =. Затова не препоръчваме да се използва = като аритметичен оператор.



  Следваща страница >> 


Ключови думи: c C++ изчислителен процес променлива функция


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

Абе хора, разберете, че оператор е нещо което работи с операнди, като "+", "-", "/", "*", "%", "!", "^", "=", "==" и т.н. В езика C има унарни, бинарни и един тернарен оператор. Тоест имаме неща като: "оператор операнд1", "операнд1 оператор операнд2", и "операнд1 ? операнд2 : операнд3". Неща като if-else, for, while и do-while се наричат контролни структури. Откакто съм се върнал не мога да повярвам каква профанщина се шири навсякъде и какво бъдеще има IT в България когато хората които пишат статии не са наясно с такива елементарни неща.

  blowfish на 15.08.2007 18:06

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008