Segue a especificação dos exercícios:
- Indique o resultado impresso na tela caso a linguagem utilize
Escopo estático e Escopo Dinâmico.
int x = 3; void inc (int n) { x += n; } void print (void) { printf (``%d'', x); } void primeiro (void) { inc (9); print (); } void segundo (void) { int x = 6; inc (7); print (); } void main (int argc, char **argv) { inc (-4); primeiro (); print (); segundo (); print (); }
- Informe quais variáveis são estáticas e quais são dinâmicas do código do exercício anterior.
- Repita o exercício anterior considerando o seguinte trecho de
código:
int x = 0; void foo (int a){ static int b = 0; int c = a * 2; b++; } void main (void){ int d = 10; float *e = malloc (sizeof(float)); foo(d); free(e); }
- Indique aonde seriam alocadas as variáveis do código do exercício inicial, considerando o segmento de código, segmento de dados, pilha e monte.
- Repita o exercício anterior para o código do exercício anterior anterior.
- Uma pessoa desenvolveu o seguinte programa com o objetivo de
imprimir na tela o dia da semana por extenso. Para tanto, o
programa utiliza a função de sistema denominada
time()
, que retorna quantos segundos se passaram entre a hora atual e 01/01/1970. Tal resultado é analisado pela funçãolocaltime()
, que analisa o resultado dado portime()
e preenche uma estrutura de dados (tblock
) contendo informações sobre a data e a hora local do sistema. Ao executar, a pessoa percebeu que o comportamento do programa é errático, hora funcionando e hora não funcionando, apresentando resultados estranhos. Analise o programa e explique os motivos para tal comportamento ocorrer. Apresente soluções.#include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<time.h> char* diaSemana(){ char diaExt[][4] = { "dom", "seg", "ter", "qua", "qui", "sex", "sab" } ; time_t timer; struct tm *tblock; timer = time(NULL); tblock = localtime(&timer); return diaExt[tblock->tm_wday]; } main(){ char* dia; dia = diaSemana(); clrscr(); printf("%d %s\n", dia, dia); }