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

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) и присваивание