<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.brdoom.org/index.php?action=history&amp;feed=atom&amp;title=Data_types</id>
	<title>Data types - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.brdoom.org/index.php?action=history&amp;feed=atom&amp;title=Data_types"/>
	<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Data_types&amp;action=history"/>
	<updated>2026-04-14T19:49:45Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Data_types&amp;diff=89&amp;oldid=prev</id>
		<title>MegaManx3: Criação da pagina tipo de dados</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Data_types&amp;diff=89&amp;oldid=prev"/>
		<updated>2026-02-05T01:04:57Z</updated>

		<summary type="html">&lt;p&gt;Criação da pagina tipo de dados&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{note|Esta página é sobre [[ACS]]. Para [[ZScript]], veja &amp;#039;&amp;#039;&amp;#039;[[ZScript data types]]&amp;#039;&amp;#039;&amp;#039;.}}ACS suporta vários tipos de dados que você pode usar. Desses, a maioria é tratada como “gambiarras”. Na prática, ACS só suporta um tipo de dado de verdade: o tipo inteiro.&lt;br /&gt;
&lt;br /&gt;
== Integer ==&lt;br /&gt;
O tipo inteiro é o tipo de dado básico. Um inteiro é qualquer número inteiro (sem parte fracionária) e pode ser negativo, positivo ou zero. O intervalo de um inteiro vai de -2.147.483.648 a 2.147.483.647. Para declarar uma variável desse tipo você usa a palavra-chave &amp;#039;&amp;#039;int&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Boolean ==&lt;br /&gt;
ACS tem um suporte “hackeado” para o tipo booleano. Esse tipo pode guardar um valor verdadeiro ou falso (ou 1 e 0). Em ACS você usa a palavra-chave &amp;#039;&amp;#039;bool&amp;#039;&amp;#039; para declarar uma variável booleana. Mesmo usando um nome diferente, no fim das contas é a mesma coisa que um inteiro e tem todas as mesmas propriedades.&lt;br /&gt;
 //Isto é legal&lt;br /&gt;
 bool bTest = 7;&lt;br /&gt;
&lt;br /&gt;
== Character ==&lt;br /&gt;
O suporte ao tipo caractere é praticamente o mesmo de C/C++, exceto que você precisa usar o tipo inteiro. Ao atribuir caracteres a uma variável, você deve colocá-los entre aspas simples, como neste exemplo:&lt;br /&gt;
 //Isto atribui a variável à letra a&lt;br /&gt;
 int Test = &amp;#039;a&amp;#039;;&lt;br /&gt;
Você também pode usar caracteres especiais: ASCII NUL &amp;lt;code&amp;gt;&amp;#039;\0&amp;#039;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;#039;\\&amp;#039;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;#039;\n&amp;#039;&amp;lt;/code&amp;gt; para nova linha e &amp;lt;code&amp;gt;&amp;#039;\t&amp;#039;&amp;lt;/code&amp;gt; para tabulação horizontal.&lt;br /&gt;
&lt;br /&gt;
== String ==&lt;br /&gt;
Em ACS você pode definir literais de string que se parecem com isto:&lt;br /&gt;
 //isto é um literal de string&lt;br /&gt;
 &amp;quot;OMG its a string&amp;quot;&lt;br /&gt;
Quando o compilador vê isso, ele adiciona a string à tabela de strings e então atribui a ela um número de índice. A variável de string, declarada com a palavra-chave &amp;#039;&amp;#039;str&amp;#039;&amp;#039;, não guarda a string em si, mas sim o índice da tabela de strings, parecido com como literais de string em C “decaem” para ponteiros em certos contextos. Em outras palavras, a variável de string é a mesma coisa que um inteiro e tem todas as suas propriedades. A única forma do ACS “saber” que aquilo é uma string é quando ela é usada por funções especiais que esperam uma string.&lt;br /&gt;
 //Esta função na verdade recebe o índice dessa string na tabela de strings&lt;br /&gt;
 //mas a função sabe pegar esse número e usá-lo para procurar na tabela&lt;br /&gt;
 [[CheckInventory]](&amp;quot;{{class|Fist}}&amp;quot;);&lt;br /&gt;
Este é outro exemplo de como strings são tratadas:&lt;br /&gt;
 //Aqui tentamos somar duas strings&lt;br /&gt;
 str Test = &amp;quot;omg its a &amp;quot; + &amp;quot;string!&amp;quot;;&lt;br /&gt;
 [[print]](s:Test); //Isto imprime &amp;quot;string!&amp;quot; e NÃO &amp;quot;omg its a string!&amp;quot;&lt;br /&gt;
 //o que realmente aconteceu foi isto&lt;br /&gt;
 Test = 0 + 1;&lt;br /&gt;
 //então você vê que o que está sendo armazenado é o índice&lt;br /&gt;
Para concatenar strings, não use +; use [[StrParam]] no lugar.&lt;br /&gt;
&lt;br /&gt;
== Fixed point ==&lt;br /&gt;
ACS tem um suporte bem básico para tipos de ponto fixo. O que acontece é que você precisa atribuí-los a tipos inteiros. A parte inteira fica nos bits 16&amp;amp;#x2013;31 do inteiro e a parte fracionária fica nos bits 0&amp;amp;#x2013;15.&lt;br /&gt;
    3                   2                   1                   0&lt;br /&gt;
  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 |          Parte Inteira        |      Parte Fracionária        |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
Para ver isso em ação, temos este exemplo:&lt;br /&gt;
 //Isto atribui 1.0 a um inteiro&lt;br /&gt;
 int Test = 1.0;&lt;br /&gt;
 //O valor inteiro real é 65536, como mostrado pelo comando abaixo&lt;br /&gt;
 [[PrintBold]](d:Test);&lt;br /&gt;
 [[PrintBold]](f:Test); // Isto imprime como ponto fixo, e vai mostrar &amp;quot;1&amp;quot;&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
</feed>