Considere que a memória de um computador armazena os seguintes valores:
Endereço
Conteúdo
0B2
180
0B3
1.79
0B4
178
Considere que as variáveis inteiras a e b correspondem aos endereços 0B2 e 0B4, respectivamente, e que a variável de ponto flutuante corresponde ao endereço 0B3. Identificar os valores a serem mostrados pelas seguintes instruções:
Temos a memória com os seguintes conteúdos: o inteiro em vale 180, o ponto flutuante em vale 1,79, e o inteiro em vale 178. Vamos usar isso para avaliar cada printf.
Passo 2
Para printf("%5d %4.2f", a, x): imprimimos como inteiro em largura 5 e como float com 2 casas decimais em largura 4. Como e , temos:
Para printf("%p", &b): o especificador %p mostra o endereço de memória de b. Como , a saída típica é “0xb4”.
Passo 3
Para printf("%.2f", x*(int)x): primeiro fazemos o cast (int)x que é 1, depois xtimes1=1,79. Com 2 casas decimais sai “1.79”.
Passo 4
Para printf("%5d", b+(&a)): tratamos como valor numérico do endereço e somamos a &a, dando 0x B2=17810. Impresso em largura 5 vira “ 356”.
Passo 5
Para printf("%5.2f", (int)(&x)/x): , cast para &x=0x B3=17910 continua 179. Divide por int dá x=1,79. Com 2 casas decimais e largura 5 sai “100.00”.