Anda di halaman 1dari 72

UNIDADE I INTRODUO LINGUAGEM DE PROGRAMAO C++

2002, Ulysses de Oliveira 1

Histrico da Linguagem C++


Histria: Quem: Bjarne Stroustrup Quando: 1982 Aonde: laboratrios da AT&T

2002, Ulysses de Oliveira

Histrico da Linguagem C++


Objetivos: Melhoramentos da linguagem C Capaz de suportar o paradigma de programao orientadas a objetos

2002, Ulysses de Oliveira

Melhoramentos com Relao a C


Checagem rgida de tipos Programao orientada a objetos Reusabilidade Facilidades para tratamento de excees Facilidades embutidas para alocao e liberao dinmica de memria Facilidades para criao de tipos de dados genricos.
2002, Ulysses de Oliveira 4

Status atual: a linguagem mais utilizada profissionalmente em todo o mundo Faz parte do currculo da maioria dos cursos de computao Padro atual da linguagem C++: homologado pelo comit ISO em meados de 1998
2002, Ulysses de Oliveira 5

1.2 Aspectos Fundamentais


1.2.1 Identificadores e Palavras Reservadas Identificadores
Nomeiam (ou rotulam) objetos linguagem de programao utilizados numa

Constituio em C: letras, dgitos e o caractere sublinha (_); o primeiro constituinte no pode ser um dgito Nmero de caracteres permitido: depende da implementao de C utilizada; padro requer que compiladores aceitem, pelo menos, identificadores cm 31 caracteres
2002, Ulysses de Oliveira 6

Identificadores e Palavras Reservadas


Identificadores C faz distino entre letras maisculas e minsculas (e.g., minhaVar e MinhaVar so diferentes

Palavras reservadas Tm significado prprio na linguagem No podem ser usados como identificadores
2002, Ulysses de Oliveira 7

1.2.2 Tipos de Dados Elementares


Classificao:
Tipo de Dados

void

Escalares

Agregados

bool

Aritmticos

Enumeraes

Ponteiros

Inteiros

Ponto-flutuante

int

char

float

double
8

2002, Ulysses de Oliveira

Tipos de Dados Elementares


Tamanhos Tpicos de Tipos Aritmticos
TIPO Inteiro Inteiro Ponto-flutuante Ponto-flutuante PALAVRA-CHAVE int char float double TAMANHO 4 bytes 1 byte 4 bytes 8 bytes

2002, Ulysses de Oliveira

Tipos de Dados Elementares


Qualificadores: short, long, signed e unsigned. int: signed por default char sinal default depende do compilador utilizado Interpretaes de short e long: variam de compilador para compilador

2002, Ulysses de Oliveira

10

Intervalos Tpicos de Valores de Tipos Aritmticos


TIPO int short int long int unsigned int unsigned short int unsigned long int signed char unsigned char TAMANHO (em bytes) 4 2 4 4 2 4 1 1 INTERVALO DE VALORES -231 a 231 - 1 -215 a 215 - 1 -231 a 231 - 1 0 a 232 - 1 0 a 216 - 1 0 a 232 - 1 -27 a 27 - 1 0 a 28 - 1

2002, Ulysses de Oliveira

11

1.2.3 Constantes
Tipos de constantes:

inteiras de ponto flutuante caracteres strings enumeraes

2002, Ulysses de Oliveira

12

Constantes Inteiras
Decimais: utilizam dgitos de 0 a 9 o primeiro dgito no pode ser zero, exceto quando o prprio valor zero Octais: comeam com 0 (zero) utilizam os dgitos de 0 a 7 Hexadecimais: comeam com 0x ou 0X utilizam os dgitos de 0 a 9, e as letras de A a F
2002, Ulysses de Oliveira 13

Constantes Inteiras
Sufixos: l (ou L): constante interpretada como long (e.g., 15L,
0XAAB3FL) u ou U: constante interpretada como unsigned (e.g., 15U, 0XAAB3FU) Acomodao de constante inteira sem sufixo: int (se couber) long (se couber) unsigned long (se indefinido (i.e., truncamento, erro de couber) overflow) Acomodao de constante inteira com sufixo: anlogo
2002, Ulysses de Oliveira 14

Constantes de Ponto Flutuante


Tipos de constantes de ponto flutuante: Ponto decimal (convencional) (e.g., 3.1415; .5; 7.) Notao cientfica: mantissa e expoente (potncias de 10) separadas por e ou E (e.g., 2E4 interpretado como 2x104)

2002, Ulysses de Oliveira

15

Caracteres Constantes
Caractere Constante:
Representada por caractere entre apstrofos (e.g., 'A') Compilador traduz para o valor correspondente no cdigo utilizado (e.g., 65 em ASCII)

Seqncia de caracteres de escape:


caracteres entre apstrofos comeando por \ representam caracteres no-imprimveis que produzem certos efeitos especiais de sada (e.g., '\n'; '\t')

2002, Ulysses de Oliveira

16

1.2.4 Declaraes de Variveis


Propsitos:
prover uma interpretao para uma poro de memria fazer com que o compilador aloque espao suficiente para conter a varivel identificar aquele espao por meio de um smbolo (identificador) humanamente legvel

Toda varivel precisa ser declarada antes de ser usada


2002, Ulysses de Oliveira 17

Declaraes de Variveis
Sintaxe: palavra representando o tipo da varivel seguida do nome da varivel; variveis de um mesmo tipo podem ser declaradas juntas e separadas por vrgulas Exemplo: int minhaVar, i, j; declara as variveis minhaVar, i e j como sendo do tipo int
2002, Ulysses de Oliveira 18

Declaraes de Variveis
para a Recomendaes identificadores para variveis: escolha de
(e.g.,

Escolha nomes que sejam significativos matricula mais significativo do que x ou m).

Evite utilizar nomes de variveis que sejam muito parecidos ou que difiram em apenas um caractere (e.g., primeiraNota e segundaNota so melhores do que nota1 e nota2). Evite utilizar l (ele) e o () como nomes de variveis pois so facilmente confundidos com 1 (um) e 0 (zero)
2002, Ulysses de Oliveira 19

1.2.5 Atribuio
A instruo mais simples em C++ Sintaxe:
<varivel> = <expresso>;

Inicializao: combina declarao varivel com atribuio de valor Exemplo: int


2002, Ulysses de Oliveira

de

minhaVar = 0;
20

1.2.6 Constantes Simblicas


Associa um identificador com um valor constante Objetivos principais: (1) tornar o programa mais legvel (e.g., PI mais legvel do que o valor 3.14) (2) tornar o programa mais fcil de ser modificado

2002, Ulysses de Oliveira

21

Constantes Simblicas
Definida com a diretiva #define

Exemplo: #define PI 3.14

compilador substitui todas as ocorrncia de PI por seu valor declarado (i.e., 3.14)
2002, Ulysses de Oliveira 22

1.3 Operadores e Expresses Aritmticos


Expresso aritmtica: combinao legal de operadores e operandos 1.3.1 Operadores Aritmticos
OPERADOR + + * / %
2002, Ulysses de Oliveira

OPERAO Menos unrio (inverso de sinal) Mais unrio Adio Subtrao Multiplicao Diviso Resto da diviso inteira
23

1.3.2 Precedncia e Associatividade


Precedncia e associatividade so usadas para decidir a ordem de aplicao de operadores Precedncia e associatividade de operadores aritmticos:
GRUPO DE OPERADORES +, - (unrios) *, /, % +, - (binrios) Mais baixa PRECEDNCIA Mais alta ASSOCIATIVIDADE Direita para esquerda Esquerda para direita Esquerda para direita

2002, Ulysses de Oliveira

24

1.3.3 Mistura de Tipos e Converses Automticas Converses automticas (ou implcitas): permitem misturas de tipos em expresses responsveis por resultados inesperados
Converso de Atribuio: Lado direito da atribuio convertido para o tipo do lado esquerdo Problema: quando o tipo do lado esquerdo mais curto do que o tipo do lado direito Exemplo: se c uma varivel do tipo char, a atribuio: c = 882 pode resultar na atribuio do valor 114 a c)
2002, Ulysses de Oliveira 25

Mistura de Tipos e Converses Automticas


Converso de Alargamento de Inteiros: Incua e inevitvel

de Compatibilidade de Converso Operandos: variveis e constantes so convertidos para que um operador tenha como operandos do mesmo tipo; obedece uma hierarquia de tipos

2002, Ulysses de Oliveira

26

Converso de Compatibilidade de Operandos


Hierarquia de tipos
Exemplo:
long double

double

Se x do tipo int e y do tipo float na expresso abaixo:

float

unsigned long int

x/y
a varivel x ser convertida automaticamente para float
2002, Ulysses de Oliveira

long int

unsigned int

int
27

1.3.4 Converso Explcita (Casting)


Casting: operador prefixo formado pelo nome do tipo desejado entre parnteses; resultado: o valor do operando transformado para o tipo especificado Exemplo:
Sem Casting: int i1 = 3, i2 = 2; float f; f = i1/i2; f receber o valor 1.0
2002, Ulysses de Oliveira

Com Casting: int i1 = 3, i2 = 2; float f; f = (float) i1/i2; f receber o valor 1.5


28

1.3.5 Operadores de Atribuio Aritmtica


Atribuio:
Operador com associatividade direita Pode ser utilizado para a execuo de mltiplas atribuies numa nica linha de instruo Exemplo: Se x, y, e z so do tipo int, a atribuio composta: x = y = z = 1; resulta na atribuio de 1 a z, z (i.e., 1) a y, e y (i.e., 1) a x, nesta ordem
2002, Ulysses de Oliveira 29

Operadores de atribuio aritmtica:


OPERADOR EQUIVALENTE A

a += b a -= b a *= b a /= b a %= b

a = a + b a = a - b a = a * b a = a / b a = a % b

Vantagens dos operadores de atribuio aritmtica:


Podem tornar o programa mais legvel e menos sensvel a erros de digitao Algumas CPUs possuem instrues capazes de executar estas operaes diretamente
2002, Ulysses de Oliveira 30

1.3.6 Operadores de Incremento e de Decremento Operadores de Incremento e de Decremento: Aplicam-se a variveis numricas ou ponteiros Incremento: ++ Decremento: - Efeitos colaterais: Incremento: adiciona 1 Decremento: subtrai 1
2002, Ulysses de Oliveira 31

Operadores de Incremento e de Decremento Verses: Prefixa (e.g., ++x) Sufixa (e.g., x++) Resultados: Verso prefixa: valor da varivel aps o efeito colateral Verso sufixa: valor da varivel antes do efeito colateral
2002, Ulysses de Oliveira 32

Operadores de Incremento e de Decremento Exemplo 1: int y, x = 2; Exemplo 2: int y, x = 2;

y = 5*x++; y recebe o valor 10

y = 5*++x; y recebe o valor 15

2002, Ulysses de Oliveira

33

Operadores de Incremento e Decremento


Problema: uso de uma varivel afetada por um operador que produz efeito colateral na mesma expresso em que ocorre tal efeito torna a expresso dependente de implementao

Exemplo:
16 int 4

4 i, j = 4;

i = j * j++; A expresso poder resultar em 16 (se j for 20 5 avaliado primeiro)4 A expresso poder resultar em 20 (se j++ for avaliado primeiro)
2002, Ulysses de Oliveira 34

1.3.7 O Operador sizeof


Operador sizeof
Operador prefixo Precedncia: igual dos operadores + e - unrios Associatividade: da direita para a esquerda Operando: um tipo de dado ou uma expresso Resultado: nmero de bytes necessrios para alocar uma varivel daquele tipo

Exemplo:
unsigned long tamanho = sizeof(double);
2002, Ulysses de Oliveira 35

1.4 Operadores Relacionais e Lgicos Operadores Relacionais: Operadores binrios utilizados em expresses de comparao

2002, Ulysses de Oliveira

36

Operadores Relacionais
OPERADOR > DENOMINAO maior do que APLICAO a>b RESULTADO true se a maior do b; false, caso contrrio >= maior do que ou a igual a >= b true se a maior do que ou igual a b; false, caso contrrio < menor do que a<b true se a menor do b; 0, caso contrrio <= menor do que ou igual a a <= b true se a menor do que ou igual a b; false, caso contrrio == igual a a == b true se a igual a b; false, caso contrrio != diferente de a != b true se a diferente de b; false, caso contrrio
37

2002, Ulysses de Oliveira

Operadores Relacionais Precedncia:


>, >=, < e <= tm a mesma precedncia = e != tm precedncia menor Todos: logo atribuio acima dos operadores de

CUIDADO: No confundir == (relacional) com = (atribuio)


2002, Ulysses de Oliveira 38

Operadores Lgicos
Operadores prioridade): lgicos (em ordem decrescente de

OPERADOR Negao Conjuno Disjuno

SMBOLO ! && ||

Precedncias:
! tem a mesma precedncia dos operadores unrios && e || tm precedncias mais baixas do que operadores aritmticos e relacionais, o operador && tem precedncia mais alta do que o operador ||
2002, Ulysses de Oliveira 39

Operadores Lgicos

Resultados:
X
0 ou false diferente de 0 ou true

!X
true false

X
0 ou false 0 ou false diferente de 0 ou true diferente de 0 ou true

Y
0 ou false diferente de 0 ou true 0 ou false diferente de 0 ou true

X && Y
false false false true

X || Y
false true true true

Ordem de avaliao: da esquerda para a direita


2002, Ulysses de Oliveira 40

1.5 Estruturas de Controle


Fluxo normal de execuo: um programa executado seqencialmente, da primeira ltima instruo Estruturas de controle Alteram o fluxo normal de execuo Provocam desvios e repeties de certas instrues
2002, Ulysses de Oliveira 41

Estruturas de Controle
Desvios condicionais: permitem decidir, usando uma condio, se uma poro do programa ser executada ou no Desvios incondicionais: indicam, de modo incondicional que instruo ser executada em seguida Repeties (ou iteraes): permitem a execuo de uma ou mais instrues repetidamente at que uma condio seja satisfeita
2002, Ulysses de Oliveira 42

1.5.1 Seqncias de Instrues Bloco (ou instrues compostas):


Mais de uma instruo entre chaves (i.e., entre { e }) Pode ser inserido em qualquer local em um programa onde uma nica instruo permitida Pode conter declaraes de variveis

2002, Ulysses de Oliveira

43

1.5.2 Instrues Vazias


Instruo Vazia: No executa nenhuma tarefa Representada por ; (ponto-e-vrgula)

2002, Ulysses de Oliveira

44

1.5.3 Laos de Repetio


Lao de Repetio while
Sintaxe:
while (<expresso>) <instruo>

Partes:
Condio (teste): expresso entre parnteses (usualmente uma expresso relacional) Corpo do lao: instruo ou seqncia de instrues entre chaves
2002, Ulysses de Oliveira 45

Lao de Repetio while Interpretao:


1. A expresso entre parnteses avaliada 2. Se o resultado desta expresso for diferente de zero (ou true), o corpo do lao executado e retorna-se ao passo 1 3. Caso contrrio, o lao encerrado
2002, Ulysses de Oliveira 46

Exemplos de Laos de Repetio while


Quantas vezes estes laos so executados? Quais sero os valores de x e y? Exemplo 1:
long x = 0L, y = 10L; while (x < y) { x++; y--; }
Executado 5 vezes x = 5; y = 5
Instruo for

Exemplo 2:
long x = 0L, y = 10L; while (x < y) { ++x; --y; }
Executado 5 vezes x = 5; y = 5

Exemplo 3:
long x = 0L, y = 10L; while (x++ < y--) {
Executado 5 */ ; /* Corpo Vazio vezes

Exemplo 4:
long x = 0L, y = 10L; while (++x < --y) {
Executado 4 */ ; /* Corpo Vazio vezes

} x 2002, Ulysses de Oliveira =

6; y = 4

x = 5; y = 5

47

Lao de Repetio while


Cuidado para no encerrar a instruo while por descuido
Exemplo:

while (x); x--; }

Esta instruo ser executada exatamente uma vez se o valor de x for 0 e o programa entrar em loop sem fim se o valor de x for diferente de 0

2002, Ulysses de Oliveira

48

1.5.3.2 Lao de Repetio do-while


Sintaxe:
do <instruo>; while (<expresso>);

Partes:
condio: <expresso> corpo do lao: <instruo>

Interpretao: semelhante ao while, mas teste


feito no final e no no incio
2002, Ulysses de Oliveira 49

Exemplos de Laos de Repetio do-while


Quantas vezes estes laos so executados? Quais sero os valores de x e y? Exemplo 1:
long do { x++; y--;
Executado 5 vezes x = 5; y = 5
Comparar com while

Exemplo 2:
long do { ++x; --y;
Executado 5 vezes x = 5; y = 5

x = 0L, y = 10L;

x = 0L, y = 10L;

} while (x < y);

} while (x < y);

Exemplo 3:
long do { x = 0L, y = 10L;
Executado 6 vezes

Exemplo 4:
long do { x = 0L, y = 10L;
Executado 5 vezes

x = Vazio ; /* Corpo 6; y = 4 */ } while Oliveira 2002, Ulysses de(x++ < y--);

x = Vazio ; /* Corpo 5; y = 5 */ } while (++x < --y);

50

Lao de Repetio for


Sintaxe:
<expresso1> avaliada <expresso2> avaliada

Interpretao
Aps a execuo do corpo do lao, <expresso3> avaliada e retorna-se ao segundo passo

for (<expresso1>; <expresso2>; <expresso3>) <instruo>; Se <expresso2> resultar num


valor diferente de zero ou true, o corpo do lao executado Se <expresso2> resultar em zero ou false, a instruo for encerrada e o controle do programa passa para a instruo seguinte

Qualquer das expresses entre parnteses opcional


2002, Ulysses de Oliveira 51

Lao de Repetio for


Equivalente (em termos funcionais) :
<expresso1>; while (<expresso2>){ <instruo>; <expresso3>; Varivel de controle (ou de contagem)

Uso mais freqente: laos de contagem


Exemplo: for }
2002, Ulysses de Oliveira

(j = 1; j <= 10; j++) { ...


Seqncia de instrues a ser executada 10 vezes repetidamente
52

1.5.3.4 Lao de Repetio Infinitos


Corpos so executados indefinidamente Situaes:
(1) No h condio de trmino; ou (2) Existe uma condio de trmino que nunca atingida Exemplos: while (1) <instruo>; for ( ; ; ) <instruo>;
2002, Ulysses de Oliveira

Situao 1

Exemplo: for (i = 1; i <= 10; i++){ ... i = 2; }


53

Situao 2

1.5.4 Instrues Condicionais


Permitem o desvio do fluxo de execuo para outras partes do programa dependendo da avaliao de um teste (condio) Instruo if-else Sintaxe:
if (<expresso>) <instruo1>; else <instruo2>;
Se <expresso> resultar num valor diferente de zero (ou true), <instruo1> executada Se <expresso> resultar em zero (ou false), <instruo2> executada
54

<expresso> avaliada

Interpretao

A parte else opcional

2002, Ulysses de Oliveira

Exemplos de Instrues if
Quando estas instrues sero executadas? Exemplo 1:
if (x) y++; else y--; z = x + y;
Executada quando x for diferente de zero Executada quando x for igual a zero Executada sempre

Exemplo 2:
if (x) y++; y--;
Executada quando x for diferente de zero Executada sempre

Exemplo 3:
int x = 0; if (x = 10)

Isto atribuio e no comparao

y += 1;

Executada sempre
55

2002, Ulysses de Oliveira

Instrues if
Aninhamento de ifs:
Desvios mltiplos Instruo seguindo o if ou seguindo o else tambm uma instruo if Regra de Casamento entre ifs e elses Um else est sempre associado ao if mais prximo que no tenha ainda um else associado, a no ser que o if mais prximo do else esteja isolado entre chaves

2002, Ulysses de Oliveira

56

Exemplo de instruo if aninhado


Quais so os pares casados de ifs e elses?
int a, b, c, x; ... if (a < b) if Casamento (a < c) x = a; else x = c; else if (b < c) Casamento Casamento

x = b; else x = c;
2002, Ulysses de Oliveira

57

Exemplos de Casamento entre ifs e elses


Quando estas instrues sero executadas? Exemplo 1:
if (x) if (y) y += x; else x -= y;
Executada quando x e y so diferentes de zero Executada quando x diferente de zero e y igual a zero

Exemplo 2:
if (x) if (y) { y += x; } else x -= y;
Executada quando x e y so diferentes de zero

Executada quando x diferente de zero; independentemente de y


2002, Ulysses de Oliveira 58

Operador Condicional
Formato: x ? y : z Resultado: y quando x for diferente de zero, e z quando x for zero Ordem de avaliao: o primeiro operando sempre avaliado em primeiro lugar, em seguida avaliado o segundo ou o terceiro operando Precedncia: maior apenas do que a dos operadores de atribuio e do operador , Associatividade: da direita para a esquerda
2002, Ulysses de Oliveira 59

Operador Condicional Exemplo:


if (x) w = y; else w = z; pode ser substitudo por: w = x ? y : z;
2002, Ulysses de Oliveira 60

Instruo switch
Instruo de seleo mltipla usada quando existem muitas ramificaes a seguir Melhora a legibilidade e a eficincia do programa

Nem sempre uma instruo switch pode substituir instrues if aninhadas


2002, Ulysses de Oliveira 61

Instruo Switch Sintaxe:


<expresso> avaliada

Interpretao

switch (<expresso>) { case <expresso constante 1> : <instruo 1> case <expresso constante 2> : <instruo 2>

. :
case <expresso constante N> : <instruo N> default : <instruo D> }
Se <expresso> no resultar em nenhum valor seguindo um case, as instrues que seguem a parte inteiro (e.g., resultar numdefault sero executadas

Se <expresso> resultar em alguma expresso seguindo um case, todas as instrues que seguem esta expresso sero executadas

<expresso> deve
2002, Ulysses de Oliveira

char, int, long)


62

Instruo switch
Para evitar que todas as instrues seguindo o case selecionado sejam executadas, usa-se: break (mais comum), goto ou return
Exemplo: char meuCaractere; ... switch (meuCaractere) { case 'A': Instrues referentes ... break; opo 'A' case 'B': Instrues referentes ... opo 'B' break; case 'C': Instrues referentes ... opo 'C' break; default: Instrues referentes ... opo default break; 2002, Ulysses de Oliveira Este break desnecessrio }

63

Instruo switch
Quando mais de uma opo case corresponde a uma mesma instruo, estas opes so justapostas e seguidas pela instruo comum
Exemplo: char meuCaractere; ... switch (meuCaractere) { case 'a': case 'A': Instrues referentes ... opo 'a' ou 'A' break; case 'b': case 'B': Instrues referentes ... opo 'b' ou 'B' break; default: Instrues referentes ... opo default break; }

2002, Ulysses de Oliveira

64

1.5.5 Desvios Incondicionais Permitem o desvio do fluxo programa para outras partes programa independentemente avaliao de qualquer condio do do da

Uso indiscriminado pode tornar os programas difceis de serem lidos

2002, Ulysses de Oliveira

65

Instruo break
Causa o trmino prematuro de uma estrutura de seleo (switch) Pode tambm ser utilizada em estruturas de repetio Exemplo:
while (x){ ... if (y) break; /* Causa a sada do while */ ... }
2002, Ulysses de Oliveira 66

Instruo continue Provoca desvios laos de repetio incondicionais em

Provoca o retorno ao topo do lao

til quando se deseja desviar um trecho do corpo de um lao por alguma razo
2002, Ulysses de Oliveira 67

Exemplos de instrues continue


Que expresso avaliada aps a execuo de continue? Exemplo 1:
while (x){ ... if (y) continue;
Exemplo:
Expresso avaliada aps continue

Exemplo 1:
for (i = 0; i < 10; ++i){ ... if (i == 5) continue; ... }
Essas instrues no so executadas quando i = 5 Essas instrues no so executadas quando y 0 Expresso avaliada aps continue

...

2002, Ulysses de Oliveira

68

Instruo goto Sintaxe:


goto <rtulo>;

<rtulo>: identificador que indica a instruo para onde o fluxo do programa ser desviado O rtulo deve preceder a instruo rotulada e ser seguido por dois-pontos (:):
<rtulo> : <instruo>
2002, Ulysses de Oliveira 69

Instruo goto Regras: Duas instrues no podem possuir o mesmo rtulo Uma instruo rotulada deve estar situada na mesma funo que o goto que a referencia
2002, Ulysses de Oliveira 70

1.6 Operador Vrgula


Permite a avaliao de mais de uma expresso aonde uma nica expresso seria normalmente permitida Resultado: expresso (operando) mais direita Precedncia: mais baixa de toda a linguagem C Associatividade: esquerda para a direita Ordem de avaliao: da esquerda para a direita. Uso indiscriminado prejudica a legibilidade
2002, Ulysses de Oliveira 71

Operador Vrgula
Uso mais comum: em expresses for Exemplos:
Exemplo 1:
for (j = 10, k = 1; j - k > 0; j--, k++){ ... }
A ordem dos operandos no faz diferena

Faz diferena a ordem dos operandos do operador vrgula?

Exemplo 2:
for (j = 5, k = 10; j-- > 0, k-- > 0; ){ ... }
2002, Ulysses de Oliveira

A ordem dos operandos FAZ diferena


72

Anda mungkin juga menyukai