Variáveis Objective-C
Uma variável nada mais é que um nome dado a uma área de armazenamento que nossos programas podem manipular. Cada variável em Objective-C possui um tipo específico, que determina o tamanho e o layout da memória da variável; a faixa de valores que podem ser armazenados nessa memória; e o conjunto de operações que podem ser aplicadas à variável.
O nome de uma variável pode ser composto de letras, dígitos e o caractere de sublinhado. Deve começar com uma letra ou um sublinhado. Letras maiúsculas e minúsculas são diferentes porque Objective-C diferencia maiúsculas de minúsculas. Com base nos tipos básicos explicados no capítulo anterior, haverá os seguintes tipos básicos de variáveis -
Sr. Não. | Tipo e descrição |
---|---|
1 | char Normalmente, um único octeto (um byte). Este é um tipo inteiro. |
2 | int O tamanho mais natural do inteiro para a máquina. |
3 | float Um valor de ponto flutuante de precisão única. |
4 | double Um valor de ponto flutuante de precisão dupla. |
5 | void Representa a ausência de tipo. |
A linguagem de programação Objective-C também permite definir vários outros tipos de variáveis, que cobriremos em capítulos subsequentes como Enumeração, Ponteiro, Matriz, Estrutura, União, etc. Para este capítulo, vamos estudar apenas os tipos básicos de variáveis.
Definição de Variável em Objective-C
Uma definição de variável significa dizer ao compilador onde e quanto criar o armazenamento para a variável. Uma definição de variável especifica um tipo de dados e contém uma lista de uma ou mais variáveis desse tipo como segue -
type variable_list;
Aqui, type deve ser um tipo de dados Objective-C válido, incluindo char, w_char, int, float, double, bool ou qualquer objeto definido pelo usuário, etc., e variable_listpode consistir em um ou mais nomes de identificadores separados por vírgulas. Algumas declarações válidas são mostradas aqui -
int i, j, k;
char c, ch;
float f, salary;
double d;
A linha int i, j, k;ambos declaram e definem as variáveis i, j e k; que instrui o compilador a criar variáveis chamadas i, j e k do tipo int.
As variáveis podem ser inicializadas (atribuídas a um valor inicial) em sua declaração. O inicializador consiste em um sinal de igual seguido por uma expressão constante como segue -
type variable_name = value;
Alguns exemplos são -
extern int d = 3, f = 5; // declaration of d and f.
int d = 3, f = 5; // definition and initializing d and f.
byte z = 22; // definition and initializes z.
char x = 'x'; // the variable x has the value 'x'.
Para definição sem um inicializador: variáveis com duração de armazenamento estático são inicializadas implicitamente com NULL (todos os bytes têm o valor 0); o valor inicial de todas as outras variáveis é indefinido.
Declaração de variável em Objective-C
Uma declaração de variável fornece garantia ao compilador de que existe uma variável com o tipo e nome fornecidos para que o compilador prossiga para compilação posterior sem precisar de detalhes completos sobre a variável. Uma declaração de variável tem seu significado apenas no momento da compilação, o compilador precisa da declaração da variável real no momento da vinculação do programa.
Uma declaração de variável é útil quando você está usando vários arquivos e define sua variável em um dos arquivos, que estará disponível no momento da vinculação do programa. Você vai usarexternpalavra-chave para declarar uma variável em qualquer lugar. Embora você possa declarar uma variável várias vezes em seu programa Objective-C, ela pode ser definida apenas uma vez em um arquivo, função ou bloco de código.
Exemplo
Tente o exemplo a seguir, onde as variáveis foram declaradas no topo, mas foram definidas e inicializadas dentro da função principal -
#import <Foundation/Foundation.h>
// Variable declaration:
extern int a, b;
extern int c;
extern float f;
int main () {
/* variable definition: */
int a, b;
int c;
float f;
/* actual initialization */
a = 10;
b = 20;
c = a + b;
NSLog(@"value of c : %d \n", c);
f = 70.0/3.0;
NSLog(@"value of f : %f \n", f);
return 0;
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
2013-09-07 22:43:31.695 demo[14019] value of c : 30
2013-09-07 22:43:31.695 demo[14019] value of f : 23.333334
O mesmo conceito se aplica à declaração de função, onde você fornece um nome de função no momento de sua declaração e sua definição real pode ser fornecida em qualquer outro lugar. No exemplo a seguir, é explicado usando a função C e, como você sabe, Objective-C também suporta funções de estilo C -
// function declaration
int func();
int main() {
// function call
int i = func();
}
// function definition
int func() {
return 0;
}
Lvalues e Rvalues em Objective-C
Existem dois tipos de expressões em Objective-C -
lvalue- As expressões que se referem a um local da memória são chamadas de expressão "lvalue". Um lvalue pode aparecer como o lado esquerdo ou direito de uma atribuição.
rvalue- O termo rvalue refere-se a um valor de dados que é armazenado em algum endereço da memória. Um rvalue é uma expressão que não pode ter um valor atribuído a ela, o que significa que um rvalue pode aparecer no lado direito, mas não no lado esquerdo de uma atribuição.
As variáveis são lvalues e, portanto, podem aparecer no lado esquerdo de uma atribuição. Literais numéricos são rvalues e, portanto, não podem ser atribuídos e não podem aparecer no lado esquerdo. A seguir está uma declaração válida -
int g = 20;
Mas a seguir não é uma declaração válida e geraria um erro em tempo de compilação -
10 = 20;