OpenSCADAWiki: Roman Savochenko/C Short All/part1/part6 ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 

1.6 Операторы

1.6.1 C

break
Прекращает выполнение ближайшего внешнего оператора: do, for, switch или while.

for(;;) { printf("TEST"); break; }


case
Оценивает <выражение> и выполняет любое утверждение, связанное с <постоянной-выражением>. Если не имеется никакого соответствия с постоянным выражением, то выполняется связанное с заданным по умолчанию ключевым словом. Если заданное по умолчанию ключевое слово не используется, управление переходит к утверждению после блока переключателя.

switch(i)
{
  case 1: printf "Val 1"; break;
  case 2: printf "Val 2"; break;
  default: printf "Other";
}


continue
Передает управление в начало оператора цикла do, for, или while вызывая следующую итерацию.

for(i=0;i<2;i++){printf("test"); continue; exit(1);}


default
Используется в switch для выполнения действий неудовлетворяющим ни одному условию.


do
do оператор while(выражение);
Выполняет <оператор>, пока <выражение> истинно. Условие проверяется в конце цикла.


else
if (выражение) выражение1; [else выражение2;]
Выполняет <выражение2> если <выражение> не истинно.


for
for(init-expr; cond-expr; increment) оператор;
Выполняет <оператор>, пока инициализированное число <init-expr>, над которым производится операция <increment>, удовлетворяет условному выражению <cond-expr>.


goto
Оператор безусловного перехода. Управления передается на оператор с меткой <имя:>.


if
if (выражение) выражение1; [else выражение2;]
Выполняет <выражение1>, если <выражение> истинно (отлично от нуля). Если else присутствует, и <выражение> – ложно (нуль), выполняется <выражение2>. После выполнения <выражение1> или <выражение2 >, управление переходит к следующему оператору.


return
Прекращает выполнение текущей функции и возвращает управление вызывающей программе, с возможностью передачи значения выражения.


switch
Сравнивает <выражение> с константами во всех вариантах case и выполняет оператор связанный с <постоянной-выражением>. Если отсутствует соответствия с постоянных с выражениями то выполняется утверждение, связанное с ключевым словом default. Если ключевое слово default не используется то управление переходит к утверждению после блока переключателя.

switch(выражение){
case константа1: выражение1; [break;]
case константа(n): выражение(n); [break;]
[default: выражение(n+1);]
}


while
while(выражение) оператор;
Выполняет <оператор>, пока <выражение> истинно.

1.6.2 C++

explicit
Ставится перед конструктором объекта и предотвращает использование конструктора для неявного преобразования типов.


namespace
Назначение области действия имён:

namespace Example { int myvar; }
k = Example::myvar;


this
Содержит указатель на собственный объект класса (т.е на себя);


typeid
Возвращает ссылку на объект type_info. Объект type_info – это поддерживаемый системой объект, представляющий тип.

const char *dataType = typeid(T).name();


typename
Указывает, что следующий за ним идентификатор обозначает тип. Обычно используется внутри шаблонов.


using
Делает глубоковложенную команду, со специальной областью видимости, видимой по умолчанию:

using std::cout;
cout << "test";
using namespace math;

Операторы преобразования типов

static_cast
Выполняет стандартные преобразования (статическое):

int x = static_cast<int>(d);
string s = static_cast<string>("ch_string");
derivedPtr = static_cast<DerivedClass *>(basePtr); (преобразование потомка к базовому классу)


dynamic_cast
Выполняет динамическое приведение, иными словами, в процессе выполнения с проверкой возможности приведения. Можно использовать для программной проверки типа наследника из базового класса.

cylinderPtr = dynamic_cast<const Cylinder *>(shapePtr);
if(cylinderPtr != NULL) shapePtr->area(); //Цилиндр


const_cast
Используется для снятия константности или volatile путём приведения:

const_cast<const CastTest *>(this)->number-; (при вызове из константной функции)


reinterpret_cast
Для нестандартных преобразований:

count << *reintepret_cast<char *>(ptr) « endl; (преобразует (int *) в (char *) и разыменовывает)

Ключевые слова-операторы

Стандарт языка C++ предоставляет ключевые слова-операторы, которые могут использоваться вместо нескольких операторов C++ (таблица 6).


Таблица 6. Ключевые слова-операторы языка С++
Оператор
Слово-оператор
Описание
Логические операторы-ключевые слова
&&andлогическое И (AND)
||orлогическое ИЛИ (OR)
!notлогическое НЕ (NOT)
Оператор «не равно»-ключевое слово
!=not_eqне равно
Побитовые операторы-ключевые слова
&bitandпобитовое И (AND)
|bitorпобитовое включающее ИЛИ (OR)
^xorпобитовое исключающее ИЛИ (OR)
~complпобитовое инвертирование разрядов
Побитовые операторы присваивания-ключевые слова
&=and_eqпобитовое И (AND) и присваивание
|=or_eqпобитовое включающее ИЛИ (OR) и присваивание
^=xor_eqпобитовое исключающее ИЛИ (OR) и присваивание

 
Files[Hide files/form]
There is no comment on this page. [Display comments/form]