Espaços nominais
Variantes
Acções

Instruções

Da cppreference.com
< cpp‎ | language
 
 
Linguagem C++
Tópicos gerais
Original:
General topics
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Controle de fluxo
Original:
Flow control
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Declarações execução condicional
Original:
Conditional execution statements
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Instruções de iteração
Original:
Iteration statements
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Ir declarações
Original:
Jump statements
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Funções
Original:
Functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
declaração da função
lambda declaração da função
modelo de função
linha especificador
especificações de exceção(obsoleta)
noexcept especificador(C++11)
Exceções
Original:
Exceptions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Namespaces
Original:
Namespaces
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Tipos
Original:
Types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
decltype specifier(C++11)
Especificadores
Original:
Specifiers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
cv especificadores
armazenamento duração especificadores
constexpr especificador(C++11)
auto especificador(C++11)
alignas especificador(C++11)
Inicialização
Original:
Initialization
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Literais
Original:
Literals
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Expressões
Original:
Expressions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
representações alternativas
Utilitários
Original:
Utilities
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Tipos
Original:
Types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
typedef declaration
tipo de alias declaração(C++11)
atributos(C++11)
Conversões
Original:
Casts
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
conversões implícitas
const_cast conversion
static_cast conversion
dynamic_cast conversion
reinterpret_cast conversion
Elenco C-estilo e funcional
Alocação de memória
Original:
Memory allocation
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Classes
Original:
Classes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Classe propriedades específicas de função
Original:
Class-specific function properties
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Funções membro especiais
Original:
Special member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Modelos
Original:
Templates
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
modelo de classe
modelo de função
especialização de modelo
pacotes de parâmetros(C++11)
Diversos
Original:
Miscellaneous
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Assembly embutido
 
Instruções
Rótulos
label/rótulo : statement/instrução
Instruções de expressão
expression/expressão ;
Instruções compostas
{ statement/instrução... }
Instruções de seleção
if
switch
Instruções de iteração
while
do-while
for
range for(C++11)
Instruções de pulo
break
continue
return
goto
Instruções de declaração
declaration/declaração ;
Blocos try
try compound-statement/instrução-compostahandler-sequence/sequência-abordador
Memória transacional
synchronized, atomic_commit, etc(TM TS)
 

Instruções são fragmentos do programa C++ que são executados em sequência. O corpo de qualquer função é uma sequência de instruções. Por exemplo:

int main(){int n =1;// instrução de declaração n = n +1;// instrução de expressãostd::cout<<"n = "<< n <<'\n';// instrução de expressãoreturn0;// instrução de retorno}

C++ inclui os seguintes tipos de instruções:

1) instruções de expressão;
2) instruções compostas;
3) instruções de seleção;
4) instruções de iteração;
5) instruções de pulo;
6) instruções de declaração;
7) blocos try;
8) blocos atômicos e sincronizados (TM TS).

Índice

[editar]Rótulos

Qualquer instrução pode ser rotulada, ao prover um rótulo seguido por uma vírgula antes da instrução em si.

attr(opcional)identifier:statement (1)
attr(opcional)caseconstexpr:statement (2)
attr(opcional)default:statement (3)
1) alvo para goto;
2) rótulo de caso numa instrução switch;
3) rótulo default numa instrução switch.

Uma sequência de atributoattr pode aparecer logo antes do rótulo (em tal caso ela se aplica ao rótulo), ou logo antes de qualquer instrução em si, em tal caso ela se aplica à instrução inteiro. Uma instrução pode carregar múltiplos rótulos.

Um rótulo (e somente um rótulo) com um identificador declarado dentro de uma função está em escopo em todo o lugar nessa função, em todos os blocos ninhados, antes e depois de sua própria declaração.

Dois rótulos numa função não devem ter o mesmo identificador.

Rótulos não são encontrados por busca não-qualificada: um rótulo pode ter o mesmo nome que qualquer outra entidade no programa.

void f(){{goto rotulo;// rótulo em escopo embora declarado depois label:;}goto rotulo;// rótulo ignora escopo de bloco}   void g(){goto rotulo;// erro: rótulo não está em escopo em g()}

[editar]Instruções de expressão

Uma expressão seguida por um ponto vírgula é uma declaração.

attr(opcional)expression(opcional); (1)
attr(C++11) - sequência opcional de qualquer número de atributos
expression - uma expressão

A maioria de instruções num programa C++ típico são instruções de expressão, tais como assinamentos ou chamadas de função.

Uma instrução de expressão sem uma expressão é chamada uma expressão nula. Ela é frequentemente usada para prover um corpo vazio a um loop for ou while. Ela também pode ser usada para carregar um rótulo no fim de uma instrução composta.

[editar]Instruções compostas

Instruções compostas ou blocos são sequências arrodeadas por chaves de instruções.

attr(opcional){statement...(opcional)} (1)

Quando uma instrução é experada, mas múltiplas instruções precisam de ser executadas em sequência (por exemplo, numa instrução if ou num loop), uma instrução composta pode ser usada:

if(x >5)// começo de instrução if{// começo de blocoint n =1;// instrução de declaraçãostd::cout<< n;// instrução de expressão}// fim de bloco, fim de instrução if

Cada instrução composta introduz seu próprio escopo de bloco; variáveis declaradas dentro de um bloco são destruídas na chave de fechar em ordem reversa:

int main(){{// começo de blocostd::ofstream f("test.txt");// instrução de declaração f <<"abc\n";// instrução de expressão}// fim de bloco: f is flushada e fechadastd::ifstream f("test.txt");std::string str; f >> str;}

[editar]Instruções de seleção

Instruções de seleção escolhem entre um de vários fluxos de controle.

attr(opcional)if(condition)statement (1)
attr(opcional)if(condition)statementelsestatement (2)
attr(opcional)switch(condition)statement (3)
(até C++17)
attr(opcional)ifconstexpr(opcional)(init-statement(opcional)condition)statement (1)
attr(opcional)ifconstexpr(opcional)(init-statement(opcional)condition)statementelsestatement (2)
attr(opcional)switch(init-statement(opcional)condition)statement (3)
(desde C++17)
1) instrução if;
2) instrução if com um cláusula else;
3) instrução switch.

[editar]Instruções de iteração

Instruções de iteração executam repetidamente algum código.

attr(opcional)while(condition)statement (1)
attr(opcional)dostatementwhile(expression); (2)
attr(opcional)for(init-statementcondition(opcional);expression(opcional))statement (3)
attr(opcional)for(for-range-decl:for-range-init)statement (4) (desde C++11)
1) loop while;
2) loop do-while;
3) loop for;
4) loop range for.

[editar]Instruções de pulo

Instruções de pulo transferem incondicionalmente controle de fluxo

attr(opcional)break; (1)
attr(opcional)continue; (2)
attr(opcional)returnexpression(opcional); (3)
attr(opcional)returnbraced-init-list; (4) (desde C++11)
attr(opcional)gotoidentifier; (5)
1) instrução break;
2) instrução continue;
3) instrução return com uma expressão opcional;
4) instrução return usando inicialização de lista;
5) instrução goto.

Nota: para todas as instruções d epulo, tranferir para fora de um loop, fora de um bloco, ou de volta por ume variável inicializada com duração de armazenamento automática envolve a destruição de objetos com duração de armazennamento automática que estão em escopo no ponto transferido de mas não de ponto transferido para. Se múltiplos objetos foram inicializados, a ordem de destruição é a oposta da ordem de inicialização.

[editar]Instruções de declaração

Instruções de declaração introduzem um ou mais identificadores a um bloco.

block-declaration (1)
1) veja Declarações e Inicialização para detalhes.

[editar]Blocos try

Blocos try proveem a habilidade de pegar/catch exceções lançadas/thrown quando executando outras instruções.

attr(opcional)trycompound-statementhandler-sequence (1)
1) veja try/catch para detalhes.

Blocos atômicos e sincronizados

Blocos atômicos e sincronizados são usados para implementar memória transacional.

synchronizedcompound-statement (1) (TM TS)
atomic_noexceptcompound-statement (2) (TM TS)
atomic_cancelcompound-statement (3) (TM TS)
atomic_commitcompound-statement (4) (TM TS)
1)bloco sincronizado, executado em ordem total única com todos os blocos sincronizados;
2)bloco atômico que aborta em exceções;
3)bloco atômico que rola de volta em exceções;
4)bloco atômico que comete em exceções.
(TM TS)

[editar]Veja também

Documentação C para Instruções
close