Działanie if'a

A1
  • Rejestracja:ponad 9 lat
  • Ostatnio:12 miesięcy
  • Postów:32
0

Mam takie pytanko , dlaczego na początku programu if(!a) wyswietla printf , a a program mimo tego dalej działa ?
#include <stdio.h>
void Funkcja(int a,const int *b)
{
if (!a)
{
printf("%d ", b[0]);
return;
}
int *c = b;
if (a%4 == 0)
{
printf("%d %d ", b[0], b[1]);
c+=2;
}
Funkcja(a/2, c);
printf("%d", b[a%4]);
}
int tab[] = {1, 3, 5, 7};
int main()
{
Funkcja(13,tab);
return 0;
}

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Bzdury gadasz, wyświetla sie ten drugi printf a nie pierwszy bo warunek nie jest spełniony. Negacja czegoś co nie jest 0 daje 0.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
A1
  • Rejestracja:ponad 9 lat
  • Ostatnio:12 miesięcy
  • Postów:32
0

void Funkcja(int a,const int *b)
{
if (!a)
{
printf("Jeżeli if z negacja sie odpali to wyswietli się : %d ", b[0]);
return;
}
int *c = b;
if (a%4 == 0)
{
printf("%d %d ", b[0], b[1]);
c+=2;
}
Funkcja(a/2, c);
printf("%d", b[a%4]);
}
int tab[] = {1, 3, 5, 7};
int main()
{
Funkcja(13,tab);
return 0;
}

Sprawdz sobie

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
2

Generalnie słabo mi. A rozumiesz ty że masz tam rekurencje? o_O Pierwszy if w pierwszym wywołaniu tej funkcji sie nie wykona. Może to ci pomoże:

Kopiuj
#include <stdio.h>

void Funkcja(int a,const int *b)
{
    printf("Zeby zrozumiec rekurencje musisz zrozumiec rekurencje\n");
    if (!a)
    {
        printf("Jeżeli if z negacja sie odpali to wyswietli się : %d ", b[0]);
        return;
    }
    int *c = b;
    if (a%4 == 0)
    {
        printf("%d %d ", b[0], b[1]);
        c+=2;
    }
    Funkcja(a/2, c);
    printf("%d", b[a%4]);
}
int tab[] = {1, 3, 5, 7};
int main()
{
    Funkcja(13,tab);
    return 0;
}

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:4 dni
1

Może taka modyfikacja przekona ciebie że nie jest tak jak myślisz: http://ideone.com/JTxLV4

Kopiuj
#include <stdio.h>

void Funkcja(int a,const int *b)
  {
   if(!a)
     {
      printf("%d ",b[0]);
      return;
     }
   else printf("*");
   int *c=b;
   if(a%4==0)
     {
      printf("{%d %d} ",b[0],b[1]);
      c+=2;
     }
   Funkcja(a/2,c);
   printf("%d",b[a%4]);
  }
  
int tab[]={1, 3, 5, 7};
int main()
  {
   Funkcja(13,tab);
   return 0;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.