C - Variáveis

Uma variável nada mais é do que um nome dado a uma área de armazenamento que nossos programas podem manipular. Cada variável em C tem 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 sublinhado. Deve começar com uma letra ou um sublinhado. Letras maiúsculas e minúsculas são distintas porque 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). É 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 C também permite definir vários outros tipos de variáveis, que abordaremos 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 C

Uma definição de variável informa ao compilador onde e quanto armazenamento criar 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, typedeve ser um tipo de dados C válido, incluindo char, w_char, int, float, double, bool ou qualquer objeto definido pelo usuário; evariable_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;declara e define as variáveis ​​i, j e k; que instruem 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 ​​são indefinidos.

Declaração de variável em C

Uma declaração de variável fornece garantia ao compilador de que existe uma variável com o tipo e o nome fornecidos para que o compilador possa prosseguir para a compilação posterior sem exigir os detalhes completos sobre a variável. Uma definição de variável tem seu significado apenas no momento da compilação, o compilador precisa da definição de variável real no momento de vincular o 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ão disponíveis no momento da vinculação do programa. Você usará a palavra-chaveexternpara declarar uma variável em qualquer lugar. Embora você possa declarar uma variável várias vezes em seu programa 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 -

#include <stdio.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;
   printf("value of c : %d \n", c);

   f = 70.0/3.0;
   printf("value of f : %f \n", f);
 
   return 0;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

value of c : 30
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. Por exemplo -

// function declaration
int func();

int main() {

   // function call
   int i = func();
}

// function definition
int func() {
   return 0;
}

Lvalues ​​e Rvalues ​​em C

Existem dois tipos de expressões em C -

  • lvalue- As expressões que se referem a um local da memória são chamadas de expressões "lvalue". Um lvalue pode aparecer como o lado esquerdo ou direito de uma atribuição.

  • rvalue- O termo rvalue se refere a um valor de dados que é armazenado em algum endereço na 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. Dê uma olhada nas seguintes declarações válidas e inválidas -

int g = 20; // valid statement

10 = 20; // invalid statement; would generate compile-time error