Excedendo o limite de uma variável



Se tentarmos atribuir um valor fora da faixa que a variável pode conter, ela continuará a partir do zero, se for unsigned; porém, se for do tipo signed, continuará a armazenar dados a partir do menor valor negativo.

O Exemplo abaixo leva um SpeedButton e um ComboBox no Form. Quando o usuário clicar o botão, o programa mostrará o resultado de se tentar atribuir valores não contemplados pela variável.


//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ComboBox1 -> Text = "Excedendo limites de variáveis ...";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
ComboBox1 -> Text = "Veja abaixo os novos valores ...";

int i = 2147483647;
ComboBox1 -> Items -> Add("Limite para int = " + String(i));
ComboBox1 -> Items -> Add("Limite + 1 = " + String(i + 1));
ComboBox1 -> Items -> Add("Limite + 2 = " + String(i + 2));
ComboBox1 -> Items -> Add("");

unsigned int Ui = 4294967295;
ComboBox1 -> Items -> Add("Limite para unsigned int = " + String(Ui));
ComboBox1 -> Items -> Add("Limite + 1 = " + String(Ui + 1));
ComboBox1 -> Items -> Add("Limite + 2 = " + String(Ui + 2));
ComboBox1 -> Items -> Add("");

signed int Si = 2147483647;
ComboBox1 -> Items -> Add("Limite para signed int = " + String(Si));
ComboBox1 -> Items -> Add("Limite + 1 = " + String(Si + 1));
ComboBox1 -> Items -> Add("Limite + 2 = " + String(Si + 2));
ComboBox1 -> Items -> Add("");

char ch = 127;
ComboBox1 -> Items -> Add("Limite para char = " + String(int(char(ch))));
ComboBox1 -> Items -> Add("Limite + 1 = " + String(int(char(ch + 1))));
ComboBox1 -> Items -> Add("Limite + 2 = " + String(int(char(ch + 2))));
ComboBox1 -> Items -> Add("");

signed char Sch = 127;
ComboBox1 -> Items -> Add("Limite para signed char = " + String (Sch));
ComboBox1 -> Items -> Add("Limite + 1 = " + String(int(char(Sch + 1))));
ComboBox1 -> Items -> Add("Limite + 2 = " + String(int(char(Sch + 2))));
ComboBox1 -> Items -> Add("");

unsigned char Uch = 255;
ComboBox1 -> Items -> Add("Limite para unsigned char = " + String (Uch));
ComboBox1 -> Items -> Add("Limite + 1 = " + String(int(char(Uch + 1))));
ComboBox1 -> Items -> Add("Limite + 2 = " + String(int(char(Uch + 2))));
ComboBox1 -> Items -> Add("");

}
//---------------------------------------------------------------------------



anterior

índice

próxima


HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO