<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivo para Cpp - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/tag/cpp/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/tag/cpp/</link>
	<description>Artigos e Tutoriais sobre Desenvolvimento de Software, Bancos de Dados SQL, Linux, Lógica de Programação, Inteligência Artificial, Hardware, Eletrônica, Arduino, Técnicas e Teorias de Estudo e Aprendizagem, Carreira em TI, Ciências Cognitivas, e muito mais!</description>
	<lastBuildDate>Wed, 25 Jun 2025 20:09:36 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.6</generator>
	<item>
		<title>Operadores Aritméticos em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-aritmeticos-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-aritmeticos-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 12 Mar 2021 13:22:05 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cpp]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17499</guid>

					<description><![CDATA[<p>Operadores Aritméticos em C++ Um operador aritmético, como o nome sugere, é um operador que permite criar expressões aritméticas para a realização de cálculos matemáticos em u programa, geralmente com a elaboração e aplicação de fórmulas matemáticas comuns. A linguagem C++ possui suporte aos tipos básicos de operadores aritméticos, que cobrem as quatro operações fundamentais da matemática (soma, subtração, multiplicação e divisão), mais um operador para o cálculo do módulo, entendido em programação como o resto de uma divisão inteira (não confundir com módulo matemático, que se refere ao valor absoluto de um número, que é, basicamente, o número sem sinal). A tabela a seguir mostra os operadores aritméticos em C++, suas operações relacionadas e um exemplo de expressão aritmética: Operação Operador Expressão de Exemplo Adição + a + b Subtração &#8211; a &#8211; b Multiplicação * a * b Divisão / a / b Módulo % a % b Esses operadores são todos operadores binários, ou seja, que recebem e processam dois operandos, com associatividade da esquerda para a direita. O operador de divisão / realiza uma operação de divisão inteira caso ambos os operadores sejam números inteiros, e uma operação de divisão comum (de números reais) se ao [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/operadores-aritmeticos-em-c/">Operadores Aritméticos em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Operadores Aritméticos em C++</h2>
<p>Um operador aritmético, como o nome sugere, é um operador que permite criar expressões aritméticas para a realização de cálculos matemáticos em u programa, geralmente com a elaboração e aplicação de fórmulas matemáticas comuns.</p>
<p>A linguagem C++ possui suporte aos tipos básicos de operadores aritméticos, que cobrem as quatro operações fundamentais da matemática (soma, subtração, multiplicação e divisão), mais um operador para o cálculo do módulo, entendido em programação como o resto de uma divisão inteira (não confundir com <em>módulo matemático</em>, que se refere ao <em>valor absoluto</em> de um número, que é, basicamente, o número sem sinal).</p>
<p>A tabela a seguir mostra os operadores aritméticos em C++, suas operações relacionadas e um exemplo de expressão aritmética:</p>
<table style="border-collapse: collapse; width: 100%;" border="1">
<tbody>
<tr>
<td style="width: 33.3333%;">Operação</td>
<td style="width: 33.3333%;">Operador</td>
<td style="width: 33.3333%;">Expressão de Exemplo</td>
</tr>
<tr>
<td style="width: 33.3333%;">Adição</td>
<td style="width: 33.3333%;">+</td>
<td style="width: 33.3333%;">a + b</td>
</tr>
<tr>
<td style="width: 33.3333%;">Subtração</td>
<td style="width: 33.3333%;">&#8211;</td>
<td style="width: 33.3333%;">a &#8211; b</td>
</tr>
<tr>
<td style="width: 33.3333%;">Multiplicação</td>
<td style="width: 33.3333%;">*</td>
<td style="width: 33.3333%;">a * b</td>
</tr>
<tr>
<td style="width: 33.3333%;">Divisão</td>
<td style="width: 33.3333%;">/</td>
<td style="width: 33.3333%;">a / b</td>
</tr>
<tr>
<td style="width: 33.3333%;">Módulo</td>
<td style="width: 33.3333%;">%</td>
<td style="width: 33.3333%;">a % b</td>
</tr>
</tbody>
</table>
<p>Esses operadores são todos operadores binários, ou seja, que recebem e processam dois operandos, com <a href="http://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/">associatividade</a> da esquerda para a direita.</p>
<p>O operador de divisão / realiza uma operação de divisão inteira caso ambos os operadores sejam números inteiros, e uma operação de divisão comum (de números reais) se ao menos um dos operadores for um número de ponto flutuante (com casas decimais). Veja o exemplo a seguir:</p>
<pre><strong>int a = 9;</strong>
<strong>int b = 2;</strong>
<strong>float c = 2.0;</strong>
<strong>cout &lt;&lt; a / b &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; a / c &lt;&lt; endl;</strong></pre>
<p>Resultado:</p>
<pre><span style="color: #800000;"><strong>4</strong></span>
<span style="color: #800000;"><strong>4.5</strong></span></pre>
<p>No primeiro exemplo o resultado foi um numero inteiro, pois a divisão foi realizada entre dois inteiros, a e b. Já a segunda divisão retornou o número 4,5, um valor de ponto flutuante, pois um dos operandos envolvidos (variável c) era do tipo float.</p>
<p>É importante sempre levar em consideração a <a href="http://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/">ordem de precedência dos operadores</a>, que determina como uma expressão com mais de um operador será avaliada. Este é o assunto da lição seguinte, que pode ser acessada clicando no link acima.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/operadores-aritmeticos-em-c/">Operadores Aritméticos em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-aritmeticos-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Associatividade e Precedência de Operadores em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 12 Mar 2021 12:49:47 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[Cpp]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17460</guid>

					<description><![CDATA[<p>Associatividade e Precedência de Operadores em C++ A linguagem C++ avalia expressões aritméticas em uma sequência precisa, que é determinada pelas regras de precedência matemáticas e associatividade de operadores. A tabela a seguir mostra os operadores em ordem decrescente de precedência: Operadores Tipo Associatividade ( ) Parênteses De dentro para fora *&#160; /&#160; % Multiplicativo Da esquerda para a direita +&#160; &#8211; Aditivo Da esquerda para a direita &#60;&#60;&#160; &#160;&#62;&#62; Inserção / Extração Da esquerda para a direita &#60;&#160; &#60;=&#160; &#62;&#160; &#62;= Relacional Da esquerda para a direita ==&#160; != Igualdade Da esquerda para a direita = Atribuição Da direita para a esquerda Os parênteses ( ) podem ser usados para agrupar expressões e alterar a ordem de execução (precedência) dos operadores em uma expressão. Desta forma, uma expressão como: x = 5 * 2 + 3 a qual resulta em 13, é avaliada de forma diferente da expressão x = 5 * (2 + 3) que resulta no valor 25, pois neste segundo caso os parênteses alteram a ordem de execução dos operadores, efetuando a soma primeiro e depois a multiplicação com o resultado desta soma. Associatividade em C++ A associatividade diz respeito à forma como a expressão é [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/">Associatividade e Precedência de Operadores em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Associatividade e Precedência de Operadores em C++</h2>
<p>A linguagem C++ avalia expressões aritméticas em uma sequência precisa, que é determinada pelas regras de precedência matemáticas e associatividade de operadores.</p>
<p>A tabela a seguir mostra os operadores em ordem decrescente de precedência:</p>
<table style="border-collapse: collapse; width: 92.6854%; height: 210px;" border="1">
<thead>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Operadores</strong></td>
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Tipo</strong></td>
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Associatividade</strong></td>
</tr>
</thead>
<tbody>
<tr style="height: 23px;">
<td style="width: 33.3333%; height: 23px; text-align: center;">( )</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">Parênteses</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">De dentro para fora</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; height: 23px; text-align: center;">*&nbsp; /&nbsp; %</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">Multiplicativo</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">Da esquerda para a direita</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; height: 23px; text-align: center;">+&nbsp; &#8211;</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">Aditivo</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">Da esquerda para a direita</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;">&lt;&lt;&nbsp; &nbsp;&gt;&gt;</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Inserção / Extração</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Da esquerda para a direita</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;">&lt;&nbsp; &lt;=&nbsp; &gt;&nbsp; &gt;=</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Relacional</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Da esquerda para a direita</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;">==&nbsp; !=</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Igualdade</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Da esquerda para a direita</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;">=</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Atribuição</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Da direita para a esquerda</td>
</tr>
</tbody>
</table>
<p>Os parênteses ( ) podem ser usados para agrupar expressões e alterar a ordem de execução (precedência) dos operadores em uma expressão.</p>
<p>Desta forma, uma expressão como:</p>
<p style="text-align: center;"><span style="font-size: 14pt;"><strong>x = 5 * 2 + 3</strong></span></p>
<p>a qual resulta em 13, é avaliada de forma diferente da expressão</p>
<p style="text-align: center;"><strong><span style="font-size: 14pt;">x = 5 * (2 + 3)</span></strong></p>
<p>que resulta no valor 25, pois neste segundo caso os parênteses alteram a ordem de execução dos operadores, efetuando a soma primeiro e depois a multiplicação com o resultado desta soma.</p>
<h3><strong>Associatividade em C++</strong></h3>
<p>A associatividade diz respeito à forma como a expressão é avaliada. Por exemplo, a expressão <span style="color: #0000ff;"><strong>a + b + c</strong></span> é avaliada como se tivesse sido escrita <strong><span style="color: #800000;">(a + b)</span><span style="color: #0000ff;"> + c</span></strong>, pois os operadores aditivos (e aritméticos em geral) são associativos da esquerda para a direita &#8211; então, os operandos da esquerda são avaliados primeiro.</p>
<p>Já o operador de atribuição <strong>=</strong> é associativo da direita para a esquerda, de modo que a expressão <strong><span style="color: #0000ff;">a = b = 10</span></strong> é avaliada como se tivesse sido escrita<strong><span style="color: #0000ff;"> a =</span> <span style="color: #800000;">(b = 10)</span></strong>, ou seja, como se fossem duas instruções separadas e sequenciais sendo executadas:</p>
<pre><strong>b = 10;</strong>
<strong>a = b;</strong></pre>
<p>Primeiramente o valor 10 é atribuído à <a href="http://www.bosontreinamentos.com.br/programacao-em-c/declaracao-de-variaveis-em-c/">variável</a> b, e então o conteúdo da variável b é atribuído à variável a.</p>
<p>No exemplo a seguir combinamos regras de precedência com associatividade:</p>
<pre><strong>b = 10;</strong>
<strong>a = 3;</strong>
<strong>c = a * 3 + (b + 10) / 2</strong></pre>
<p>No exemplo, o ramos do lado direito será avaliado primeiro, e depois seu resultado atribuído à variável c (associatividade da atribuição). Porém, o ramo direito é em si uma expressão aritmética, e será avaliado da esquerda para a direita, respeitando a ordem de precedência dos operadores, exceto quando houver parênteses alterando-a.</p>
<p>Assim, teremos:</p>
<ul>
<li>o valor da variável a é multiplicado por 3, resultando em 9</li>
<li>o valor de b somado a 10, resultando em 20 (parênteses em ação aqui)</li>
<li>o resultado anterior é dividido por 2, resultando em 10 (ordem de precedência de operadores em c++)</li>
<li>o resultado da multiplicação de a com as operações sobre b é a soma desses valores, resultando em 19</li>
<li>e então&nbsp; o resultado da expressão é atribuído à variável c.</li>
</ul>
<p>É isso aí! Nas próximas lições vamos explorar mais a fundo os diversos tipos de operadores disponíveis em linguagem C++.</p>
<p>Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/">Associatividade e Precedência de Operadores em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tipos de Dados em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 04 Feb 2021 15:37:03 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[Cpp]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17452</guid>

					<description><![CDATA[<p>Introdução ao Tipos de Dados em C++ Por Fábio dos Reis A linguagem C++ é uma linguagem fortemente tipada. Isso significa que cada variável no programa possui um tipo associado a ela, que define o que ela pode armazenar. O compilador realiza verificação rígida dos tipos ao compilar um programa em C++ para assegurar que o tipo correto esteja sendo usado e que os tipos sejam compatíveis quando combinados entre si (por exemplo, em cálculos). Existem sete tipos de dados básicos ou fundamentais em C++, chamados de Tipos Primitivos. A tabela a seguir mostra os tipos básicos primitivos em C++, com a palavra-chave usada em sua declaração e o tamanho em bytes ocupado por cada elemento do tipo na memória RAM: Tipo Descrição Faixa de valores Tamanho (bytes) int Inteiro -2.147.483.648 a&#160;-2.147.483.647 2 ou 4 float Ponto Flutuante, 7 dígitos de precisão -3,4 x 1038 a&#160;3,4 x 1038 4 double Ponto Flutuante Duplo, 15 dígitos de precisão -1,7 x 10308 a 1,7 x 10308 8 char Caractere caracteres 1 wchar_t Caractere Ampliado &#8211; &#8211; bool Lógico true &#124; false 1 void Sem Valor (usado em funções que não retornam valores) &#8211; &#8211; Os tipos numéricos ou aritméticos que usamos em [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/">Tipos de Dados em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introdução ao Tipos de Dados em C++</h2>
<p><em>Por Fábio dos Reis</em></p>
<p>A linguagem C++ é uma linguagem fortemente tipada. Isso significa que cada variável no programa possui um tipo associado a ela, que define o que ela pode armazenar. O compilador realiza verificação rígida dos tipos ao compilar um programa em C++ para assegurar que o tipo correto esteja sendo usado e que os tipos sejam compatíveis quando combinados entre si (por exemplo, em cálculos).</p>
<p>Existem sete tipos de dados básicos ou fundamentais em C++, chamados de <strong><em>Tipos Primitivos</em></strong>. A tabela a seguir mostra os tipos básicos primitivos em C++, com a palavra-chave usada em sua declaração e o tamanho em bytes ocupado por cada elemento do tipo na memória RAM:</p>
<table style="border-collapse: collapse; width: 95.469%; height: 257px;" border="1">
<thead>
<tr style="height: 23px;">
<td style="width: 11.4318%; text-align: center; height: 24px;"><strong>Tipo</strong></td>
<td style="width: 26.7301%; text-align: center; height: 24px;"><strong>Descrição</strong></td>
<td style="width: 24.329%; text-align: center; height: 24px;"><strong>Faixa de valores</strong></td>
<td style="width: 17.9941%; text-align: center; height: 24px;"><strong>Tamanho (bytes)</strong></td>
</tr>
</thead>
<tbody>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 36px;">int</td>
<td style="width: 26.7301%; height: 36px;">Inteiro</td>
<td style="width: 24.329%; height: 36px; text-align: center;">-2.147.483.648 a&nbsp;-2.147.483.647</td>
<td style="width: 17.9941%; height: 36px; text-align: center;">2 ou 4</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 42px;">float</td>
<td style="width: 26.7301%; height: 42px;">Ponto Flutuante, 7 dígitos de precisão</td>
<td style="width: 24.329%; height: 42px; text-align: center;">-3,4 x 10<sup>38</sup> a&nbsp;3,4 x 10<sup>38</sup></td>
<td style="width: 17.9941%; height: 42px; text-align: center;">4</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 33px;">double</td>
<td style="width: 26.7301%; height: 33px;">Ponto Flutuante Duplo, 15 dígitos de precisão</td>
<td style="width: 24.329%; height: 33px; text-align: center;">-1,7 x 10<sup>308</sup> a 1,7 x 10<sup>308</sup></td>
<td style="width: 17.9941%; height: 33px; text-align: center;">8</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 25px;">char</td>
<td style="width: 26.7301%; height: 25px;">Caractere</td>
<td style="width: 24.329%; height: 25px; text-align: center;">caracteres</td>
<td style="width: 17.9941%; height: 25px; text-align: center;">1</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 34px;">wchar_t</td>
<td style="width: 26.7301%; height: 34px;">Caractere Ampliado</td>
<td style="width: 24.329%; height: 34px; text-align: center;">&#8211;</td>
<td style="width: 17.9941%; height: 34px; text-align: center;">&#8211;</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 30px;">bool</td>
<td style="width: 26.7301%; height: 30px;">Lógico</td>
<td style="width: 24.329%; height: 30px; text-align: center;">true | false</td>
<td style="width: 17.9941%; height: 30px; text-align: center;">1</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 33px;">void</td>
<td style="width: 26.7301%; height: 33px;">Sem Valor (usado em funções que não retornam valores)</td>
<td style="width: 24.329%; height: 33px; text-align: center;">&#8211;</td>
<td style="width: 17.9941%; height: 33px; text-align: center;">&#8211;</td>
</tr>
</tbody>
</table>
<p>Os tipos numéricos ou aritméticos que usamos em C++ são divididos em duas grandes categorias: <strong>tipos inteiros</strong> (números inteiros) e <strong>tipos de ponto flutuante</strong> (números fracionários). Existem diversos tipos de dados em cada uma dessas categorias, cada um com uma faixa de valores permitida (quantidade de valores possíveis) que o tipo pode armazenar.</p>
<h3>Modificadores de Tipo</h3>
<p>Um modificador é uma palavra-chave acrescentada ao nome de um tipo em sua declaração, que permite modificar seu comportamento de duas formas:</p>
<ul>
<li>Estendendo a faixa de valores suportada pelo tipo</li>
<li>Permitindo ou não o emprego de números negativos (com sinal).</li>
</ul>
<p>Alguns dos tipos básicos podem ser estendidos usando os seguintes modificadores e suas combinações:</p>
<ul>
<li>Long</li>
<li>Short</li>
<li>Unsigned</li>
<li>Signed</li>
</ul>
<p>Basicamente, esses modificadores expandem os valores mínimo e máximo da faixa de valores de cada tipo e determinam se os valores podem ser negativos ou somente positivos.</p>
<h4>Tipos com sinal &#8211; signed</h4>
<p>Um tipo com sinal (&#8220;signed&#8221;) é um tipo que permite a representação de valores positivos e negativos. É empregado quando precisamos armazenar valores negativos em um programa.</p>
<p>Um exemplo é o armazenamento de temperaturas &#8211; podemos armazenar tanto valores positivos como +32°C (temperatura real no momento em que escrevo esse artigo!) quanto temperaturas negativas como -15°C.</p>
<p>Por exemplo, o tipo int permite a faixa de valores de –2.147.483.648 a +2.147.483.647. A tabela a seguir mostra os tipos inteiros disponíveis em C++ incluindo a aplicação dos modificadores:</p>
<table style="border-collapse: collapse; width: 94.2886%; height: 227px;" border="1">
<thead>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Tipo</strong></td>
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Faixa de Valores</strong></td>
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Tamanho em bytes (típico)</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 33.3333%;">
<p>char</p>
</td>
<td style="width: 33.3333%; text-align: center;">-128 a +127</td>
<td style="width: 33.3333%; text-align: center;">1</td>
</tr>
<tr style="height: 62px;">
<td style="width: 33.3333%; height: 62px;">
<p>short<br />
short int<br />
signed short<br />
signed short int</p>
</td>
<td style="width: 33.3333%; height: 62px; text-align: center;">-32768 a +32767</td>
<td style="width: 33.3333%; text-align: center; height: 62px;">2</td>
</tr>
<tr style="height: 79px;">
<td style="width: 33.3333%; height: 79px;">
<p>int<br />
signed int</p>
</td>
<td style="width: 33.3333%; height: 79px; text-align: center;">-2.147.483.648 a +2.147.483.647</td>
<td style="width: 33.3333%; text-align: center; height: 79px;">4</td>
</tr>
<tr style="height: 63px;">
<td style="width: 33.3333%; height: 63px;">long<br />
long int<br />
signed long<br />
signed long int</td>
<td style="width: 33.3333%; height: 63px; text-align: center;">igual a int ou long long<br />
(depende da implementação)</td>
<td style="width: 33.3333%; text-align: center; height: 63px;">4 ou 8</td>
</tr>
<tr>
<td style="width: 33.3333%;">(<em>a partir do C++11</em>)<br />
long long<br />
long long int<br />
signed long long<br />
signed long long int</td>
<td style="width: 33.3333%; text-align: center;">-9223372036854775808 a +9223372036854775807</td>
<td style="width: 33.3333%; text-align: center;">8</td>
</tr>
</tbody>
</table>
<p>Na tabela acima, temos os nomes de tipos na coluna à esquerda e, como podemos ver, alguns nomes são compostos por mais de uma palavra. Sempre que possível usamos o nome mais curto disponível para o tipo em questão.</p>
<p>Assim, é muito comum usar, por exemplo, &#8220;long&#8221; do que &#8220;signed long int&#8221;, que representa o mesmo tipo (porém de forma mais explícita e melhor documentada).</p>
<p>O modificador signed para números inteiros é, na verdade, opcional. Se for omitido, o valor terá sinal por padrão.</p>
<h4>Tipos sem sinal &#8211; unsigned</h4>
<p>Já um tipo sem sinal (&#8220;unsigned&#8221;) somente permite a representação de números positivos, no mesmo espaço de armazenamento, tendo portanto uma faixa de valores positivos estendida. É usado, como podemos imaginar, quando não há a necessidade de armazenar números negativos no programa.</p>
<p>Um exemplo é o armazenamento da idade de uma pessoa &#8211; as idades são sempre números positivos; você pode ter 30 anos de idade, mas nunca -30 anos!</p>
<p>A tabela a seguir mostra os tipos inteiros em C++ sem sinal:</p>
<table style="border-collapse: collapse; width: 100%;" border="1">
<thead>
<tr>
<td style="width: 33.3333%; text-align: center;"><strong>Tipo</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Faixa de Valores</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Tamanho em bytes (típico)</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 33.3333%;">unsigned char</td>
<td style="width: 33.3333%; text-align: center;">0 a 255</td>
<td style="width: 33.3333%; text-align: center;">1</td>
</tr>
<tr>
<td style="width: 33.3333%;">unsigned short</td>
<td style="width: 33.3333%; text-align: center;">0 a 65535</td>
<td style="width: 33.3333%; text-align: center;">2</td>
</tr>
<tr>
<td style="width: 33.3333%;">unsigned int</td>
<td style="width: 33.3333%; text-align: center;">0 a 4294967295</td>
<td style="width: 33.3333%; text-align: center;">4</td>
</tr>
<tr>
<td style="width: 33.3333%;">unsigned long<br />
unsigned long int</td>
<td style="width: 33.3333%; text-align: center;">igual a unsigned int ou unsigned long long<br />
(depende da implementação)</td>
<td style="width: 33.3333%; text-align: center;">4 ou 8</td>
</tr>
<tr>
<td style="width: 33.3333%;">unsigned long long<br />
unsigned long long int</td>
<td style="width: 33.3333%; text-align: center;">0 a 18446744073709551615</td>
<td style="width: 33.3333%; text-align: center;">8</td>
</tr>
</tbody>
</table>
<p>Para criar um tipo sem sinal devemos obrigatoriamente usar a palavra-chave unsigned antes do nome do tipo em si, como no exemplo a seguir:</p>
<pre><strong>unsigned short int <span style="color: #339966;">// Tipo inteiro curto sem sinal</span></strong></pre>
<h3>Números de Ponto Flutuante</h3>
<p>Números de ponto flutuante permitem representar valores fracionários, positivos e negativos, como 3.1415 ou -9.345464576, além de permitirem o armazenamento de valores muito grandes (ou muito pequenos), em faixas de valores bem maiores que as possíveis com números inteiros.</p>
<p>Um número de ponto flutuante normalizado consiste em duas partes: uma mantissa e um expoente. A magnitude de um número é o valor da mantissa multiplicado por 10 elevado à potência do expoente.</p>
<p>Por exemplo, o número de dias em um ano típico, 365, pode ser escrito como um valor de ponto flutuante de precisão fixa em notação E (<a href="https://youtu.be/mytKd-fCv4Q" target="_blank" rel="noopener">exponencial / científica</a>) da seguinte forma:</p>
<p style="text-align: center;"><strong>3.650000E02</strong></p>
<p>Aqui, a mantissa tem sete valores decimais (float &#8211; precisão fixa) e o expoente possui dois. A letra &#8216;<strong>E</strong>&#8216; significa &#8220;<em>vezes dez elevado a</em>&#8220;, significando que o valor 3.650000 multiplica 10 elevado a 02 (10<sup>2</sup>). Ou seja:</p>
<p style="text-align: center;"><strong>3.650000 x 10 x 10 = 3.650000 x 100 = 365 (ignorando os zeros).</strong></p>
<p>Note que o valor do expoente &#8211; 02 &#8211;&nbsp; é um valor positivo. Por padrão, não precisamos especificar o sinal do expoente se for positivo, como fizemos no exemplo. Mas se o valor for negativo, é obrigatório indicar seu sinal &#8211; e podemos indicar se for positivo também, para maior clareza de representação. Veja os exemplos do mundo real:</p>
<p style="text-align: center;"><strong>Carga elementar (elétron): 1.602 × 10<sup>-19</sup>&nbsp; = <span style="color: #800000;">1.602E-19</span></strong></p>
<p style="text-align: center;"><strong>Constante de Avogadro: 6.022 x 10<sup>23</sup> = <span style="color: #800000;">6.022E23</span></strong></p>
<p>Podemos usar essa notação ao definir constantes de ponto flutuante ou ainda valores literais em um programa (diretamente no código-fonte). A letra E pode ser maiúscula ou minúscula, não importando seu caso.</p>
<p>Os tipos de ponto flutuante disponíveis em C++ são:</p>
<table style="border-collapse: collapse; width: 93.5872%; height: 82px;" border="1">
<thead>
<tr>
<td style="width: 18.5581%; text-align: center;"><strong>Tipo</strong></td>
<td style="width: 56.4597%; text-align: center;"><strong>Faixa de Valores</strong></td>
<td style="width: 24.9821%; text-align: center;"><strong>Tamanho em bytes</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 18.5581%;">float</td>
<td style="width: 56.4597%; text-align: center;">1.17549 x 10<sup>-38</sup> a 3.40282 x 10<sup>38</sup></td>
<td style="width: 24.9821%; text-align: center;">4</td>
</tr>
<tr>
<td style="width: 18.5581%;">double</td>
<td style="width: 56.4597%; text-align: center;">2.22507 x 10<sup>-308</sup> a 1.79769 x 10<sup>308</sup></td>
<td style="width: 24.9821%; text-align: center;">8</td>
</tr>
<tr>
<td style="width: 18.5581%;">long double</td>
<td style="width: 56.4597%; text-align: center;">Depende da implementação. Em meu sistema (Win 10 64 bits), por exemplo, os limites são:<br />
3.3621 x 10<sup>-4932</sup> a 1.18973 x 10<sup>4932</sup></td>
<td style="width: 24.9821%; text-align: center;">10, 12 ou 16</td>
</tr>
</tbody>
</table>
<p>O tipo float possui 7 dígitos de precisão (tamanho da mantissa), ao passo que o tipo double possui 15 dígitos de precisão (ou seja, precisão dupla). O arquivo de cabeçalho <em><strong>float.h</strong></em> informa os valores de bytes, expoente e precisão para os tipos de ponto flutuante do sistema em particular que você está usando.</p>
<p>Para descobrir os limites das faixas de valores dos tipos float, double e long double em seu sistema, você pode rodar o seguinte programa C++:</p>
<pre><strong>#include &lt;iostream&gt;</strong>
<strong>#include &lt;limits&gt;</strong>
<strong>using namespace std;</strong>
<strong>int main()</strong>
<strong>{</strong>
<strong>cout &lt;&lt; "Tipo\t\tValor Min\tValor Max\n\n"</strong>
<strong> &lt;&lt; "Float" &lt;&lt; '\t' &lt;&lt; '\t' &lt;&lt; std::numeric_limits&lt;float&gt;::min() &lt;&lt; '\t'</strong>
<strong>   &lt;&lt; std::numeric_limits&lt;float&gt;::max() &lt;&lt; '\n'</strong>
<strong> &lt;&lt; "Double" &lt;&lt; '\t' &lt;&lt; '\t' &lt;&lt; std::numeric_limits&lt;double&gt;::min() &lt;&lt; '\t'</strong>
<strong>   &lt;&lt; std::numeric_limits&lt;double&gt;::max() &lt;&lt; '\n'</strong>
<strong> &lt;&lt; "Long Double" &lt;&lt; '\t'&lt;&lt; std::numeric_limits&lt;long double&gt;::min() &lt;&lt; '\t'</strong>
<strong>   &lt;&lt; std::numeric_limits&lt;long double&gt;::max() &lt;&lt; '\n';</strong>
<strong>return 0;</strong>
<strong>}</strong></pre>
<p>Veja o resultado do código anterior em meu sistema:</p>
<p><img decoding="async" class="aligncenter wp-image-17573 size-full" title="Tipos de ponto flutuante em C++" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2021/02/tipos-ponto-flutuante-c-boson.jpg" alt="Tipos de ponto flutuante em C++" width="433" height="139" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2021/02/tipos-ponto-flutuante-c-boson.jpg 433w, https://www.bosontreinamentos.com.br/wp-content/uploads/2021/02/tipos-ponto-flutuante-c-boson-420x135.jpg 420w" sizes="(max-width: 433px) 100vw, 433px" /></p>
<p>A escolha do tipo correto de dados é importante em seus programas para garantir que seja possível representar os dados de maneira eficiente e correta. Alguns exemplos disso incluem:</p>
<ul>
<li>usar o tipo short em vez de int se o intervalo de dados permitir</li>
<li>usar double em vez de float para obter maior precisão para valores monetários (que representam dinheiro)</li>
<li>usar um wchar_t para dados de caractere que não estão incluídos no conjunto de caracteres ASCII padrão, como por exemplo o Kanji japonês</li>
</ul>
<p>Outros tipos de dados em C++ incluem os tipos de dados definidos pelo usuário (enum, structure, union e class) e tipos de dados derivados (array, ponteiro, referência), entre outros, que estudaremos em um momento oportuno.</p>
<p>Nas próximas lições vamos abordar de forma mais aprofundada conceitos como valores literais, os tipos char, wchar_t e bool, constantes, variáveis e outros.</p>
<h3>Referências</h3>
<ul>
<li>HORTON, I.; VAN WEERT, P. <em><strong>Beginning C++ 17 From Novice to Professional</strong></em>. 5ª edição. 2018. Editora Apress.</li>
<li>PRATA, S. <em><strong>C++ Primer Plus</strong></em>. 6ª edição. 2012. Editora Addison-Wesley.</li>
</ul>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/">Tipos de Dados em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Operadores Relacionais e de Igualdade em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-relacionais-e-de-igualdade-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-relacionais-e-de-igualdade-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 29 Jan 2021 14:14:26 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cpp]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17501</guid>

					<description><![CDATA[<p>Operadores Relacionais e de Igualdade em C++ Usamos os operadores relacionais para estabelecer uma relação entre dois valores (operandos). Por exemplo, com um operador relacional podemos verificar se dois valores (contidos ou não em variáveis) são iguais ou diferentes entre si. As expressões construídas com operadores relacionais sempre retornam um valor lógico (verdadeiro ou falso) Operador de atribuição Não confunda o operador de igualdade com um operador de atribuição, que possui função distinta &#8211; atribuir valores a variáveis &#8211; apesar de ambos empregarem o sinal de igual (=) A tabela a seguir lista os operadores relacionais e de igualdade usados em programação com linguagem C++, com exemplos. Operadores Relacionais Operação Operador Exemplo Maior que &#62; x &#62; y Menor que &#60; x &#60; y Maior ou igual a &#62;= x &#62;= y Menor ou igual a &#60;= x &#60;= y Operadores de Igualdade Operação Operador Exemplo Igual a == x == y Diferente de != x != y Precedência e associatividade dos operadores Os operadores relacionais tem maior precedência que os de igualdade, mas tem precedência igual entre si. A associatividade de todos esses operadores é sempre da esquerda para a direita. Exemplos Os operadores relacionais e de igualdade são [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/operadores-relacionais-e-de-igualdade-em-c/">Operadores Relacionais e de Igualdade em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Operadores Relacionais e de Igualdade em C++</h2>
<p>Usamos os operadores relacionais para estabelecer uma relação entre dois valores (operandos). Por exemplo, com um operador relacional podemos verificar se dois valores (contidos ou não em variáveis) são iguais ou diferentes entre si.</p>
<p>As expressões construídas com operadores relacionais sempre retornam um valor lógico (verdadeiro ou falso)</p>
<h4>Operador de atribuição</h4>
<p>Não confunda o operador de igualdade com um operador de atribuição, que possui função distinta &#8211; atribuir valores a variáveis &#8211; apesar de ambos empregarem o sinal de igual (=)</p>
<p>A tabela a seguir lista os operadores relacionais e de igualdade usados em programação com linguagem C++, com exemplos.</p>
<table style="border-collapse: collapse; width: 100%;" border="1">
<tbody>
<tr>
<td style="width: 33.3333%; text-align: center;" colspan="3"><span style="font-size: 14pt;"><strong>Operadores Relacionais</strong></span></td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;"><strong>Operação</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Operador</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Exemplo</strong></td>
</tr>
<tr>
<td style="width: 33.3333%;">Maior que</td>
<td style="width: 33.3333%; text-align: center;">&gt;</td>
<td style="width: 33.3333%; text-align: center;">x &gt; y</td>
</tr>
<tr>
<td style="width: 33.3333%;">Menor que</td>
<td style="width: 33.3333%; text-align: center;">&lt;</td>
<td style="width: 33.3333%; text-align: center;">x &lt; y</td>
</tr>
<tr>
<td style="width: 33.3333%;">Maior ou igual a</td>
<td style="width: 33.3333%; text-align: center;">&gt;=</td>
<td style="width: 33.3333%; text-align: center;">x &gt;= y</td>
</tr>
<tr>
<td style="width: 33.3333%;">Menor ou igual a</td>
<td style="width: 33.3333%; text-align: center;">&lt;=</td>
<td style="width: 33.3333%; text-align: center;">x &lt;= y</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;" colspan="3"><span style="font-size: 14pt;"><strong>Operadores de Igualdade</strong></span></td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;"><strong>Operação</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Operador</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Exemplo</strong></td>
</tr>
<tr>
<td style="width: 33.3333%;">Igual a</td>
<td style="width: 33.3333%; text-align: center;">==</td>
<td style="width: 33.3333%; text-align: center;">x == y</td>
</tr>
<tr>
<td style="width: 33.3333%;">Diferente de</td>
<td style="width: 33.3333%; text-align: center;">!=</td>
<td style="width: 33.3333%; text-align: center;">x != y</td>
</tr>
</tbody>
</table>
<h3>Precedência e associatividade dos operadores</h3>
<p>Os operadores relacionais tem maior precedência que os de igualdade, mas tem precedência igual entre si.</p>
<p>A associatividade de todos esses operadores é sempre da esquerda para a direita.</p>
<h4>Exemplos</h4>
<p>Os operadores relacionais e de igualdade são operadores binários que retornam um valor lógico, verdadeiro ou falso, representados respectivamente pelos valores numéricos 1 ou 0. Veja o exemplo a seguir:</p>
<pre><strong>int d = 15;</strong>
<strong>int e = 15;</strong>
<strong>cout &lt;&lt; "d &gt; e? " &lt;&lt; (d &gt; e) &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; "d &gt;= e? " &lt;&lt; (d &gt;= e) &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; "d &lt; e? " &lt;&lt; (d &lt; e) &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; "d &lt;= e? " &lt;&lt; (d &lt;= e) &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; "d == e? " &lt;&lt; (d == e) &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; "d != e? " &lt;&lt; (d != e) &lt;&lt; endl;</strong></pre>
<p>Resultado:</p>
<pre><span style="color: #800000;"><strong>d &gt; e? 0</strong></span>
<span style="color: #800000;"><strong>d &gt;= e? 1</strong></span>
<span style="color: #800000;"><strong>d &lt; e? 0</strong></span>
<span style="color: #800000;"><strong>d &lt;= e? 1</strong></span>
<span style="color: #800000;"><strong>d == e? 1</strong></span>
<span style="color: #800000;"><strong>d != e? 0</strong></span></pre>
<p>Os valores 0 e 1 retornados nos exemplos indicam, respectivamente, os valores lógicos False (falso) e True (verdadeiro). Com isso, é possível tomar decisões baseadas no resultado das comparações realizadas, principalmente quando associamos esses operadores com estruturas de decisão condicional e estruturas de repetição, que estudaremos nas próximas lições.</p>
<p>É isso aí! Vimos nessa lição os operadores relacionais e os operadores de igualdade em C++. Vamos estudar operadores lógicos e aritméticos nas próximas lições.</p>
<p>Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/operadores-relacionais-e-de-igualdade-em-c/">Operadores Relacionais e de Igualdade em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-relacionais-e-de-igualdade-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
