Enviado em 29/01/2023 - 22:23h
Boa Noite a todos!
Porque esse comportamento estranho, apenas porque troquei os parâmetros para compilar?
Fui orientado a compilar assim: gcc test.c -o test -O3 -Wall -pedantic -pedantic-errors -Werror
Pq dessa forma eu conheceria todos os erros que eu preciso consertar e ainda estaria otimizando o programa! Resumo, seria a melhor forma e a mais correta de compilar um programa!
Acontece que é estranho o comportamento do código abaixo, e isso bagunça tudo!
Porque esse comportamento estranho, apenas porque troquei os parâmetros para compilar?
Fui orientado a compilar assim: gcc test.c -o test -O3 -Wall -pedantic -pedantic-errors -Werror
Pq dessa forma eu conheceria todos os erros que eu preciso consertar e ainda estaria otimizando o programa! Resumo, seria a melhor forma e a mais correta de compilar um programa!
Acontece que é estranho o comportamento do código abaixo, e isso bagunça tudo!
#include <stdio.h>Existe explicação para isso?
int main(void) {
struct {
char Col1[5],
Col2[5],
Col3[5];
} Database1[] = {{"reg1", "a", "b"},
{"reg2", "c", "d"},
{"reg3", "e", "f"},
{"reg4", "g", "h"},
{"reg5", "i", "j"}};
int QtdReg = 0;
////////////////////////////////////////////////////////////////////////////////////////////////////
// Porque conta 5 registros compilando assim: gcc test.c -o test
// E 4 registros compilando assim: gcc test.c -o test -O3 -Wall -pedantic -pedantic-errors -Werror
////////////////////////////////////////////////////////////////////////////////////////////////////
for( ; Database1[QtdReg].Col1[0]; QtdReg++);
printf("%d registros\n", QtdReg);
QtdReg = 0;
for( ; Database1[QtdReg].Col1[0] != '\0'; QtdReg++);
printf("%d Registros\n", QtdReg);
////////////////////////////////////////////////////////////////////////////////////////////////////
QtdReg = 0;
////////////////////////////////////////////////////////////////////////////////////////////////////
// Pq imprimindo na tela ele conta corretamente, independente da forma como compilo?
////////////////////////////////////////////////////////////////////////////////////////////////////
for( ; Database1[QtdReg].Col1[0]; puts(Database1[QtdReg].Col1), QtdReg++);
printf("%d Registros\n", QtdReg);
QtdReg = 0;
for( ; Database1[QtdReg].Col1[0] != '\0'; puts(Database1[QtdReg].Col1), QtdReg++);
printf("%d Registros\n", QtdReg);
}