C - if nie sprawdza poprawnie warunku

0

Witam, mialem napisac program przeksztalcajacy liczby dziesietne na szesnastkowe, napisalem jakies 10% kodu i nagle spotkalem sie z bledem ktorego nie moge rozwiazac, mianowicie: przy sprawdzeniu(39 linijka) if("wynik funkcji">"liczba") nigdy warunek nie jest pozytywny, nawet jezeli "wynik funkcji" przekracza wielokrotnie wartosc "liczba". Nawet przy debugowaniu wyraznie widac ze obie liczby sie roznia tzn "wynik funkcji" jest wiekszy od "liczba", niestety zawartosc if zostaje i tak pominieta i nici z obliczen.

 #include<stdio.h>

int power( int wykladnik);
void itob(int n, char s[1000], int b);




main()
{
	
	char wynik[1000];
	int znaki=0;
	int g=0;
	
	printf("wpisz liczbe do konwersji\n\n");
	scanf("%d",&znaki);
	printf("wpisz zadany typ liczby wyjsciowej (16)\n\n");
	//scanf("%d",&g);
	g=16;
	itob(znaki,wynik,g);
	printf("liczba w systemie szesnastkowym:\n\n%s",wynik);
	
	
}


void itob( int n, char s[1000], int b)	//funkcja przeksztalcajaca liczbe dziesietna na liczbe szesnastkowa
{
	int bufor;
	int i,sign,wykl,d=0;
	
	if((n=sign)<0) {n=-n;}			//zmienia znak liczby na dodatni
	i=0;
	
	for(d=0;d<100;d++)				//petla wyszukujaca najwiekszy wykladnik liczby 16
	{
			
		if(power(d)>=n)		//TUTAJ JEST PROBLEM!sprawdzenie czy wynik potegowania wiekszy niz liczba wejsciow
		{	
			wykl=d-1;				
			d=102;					//jesli tak to wyjscie z petli
		}
	}
	
	d=0;
	for(i=wykl;i>=1;i--)			//obliczanie kolejnych wykladnikow wstecz
		{
		s[d++]=(n/power(i));
		n=(n%power(i));
		}
	
	bufor=n/power(wykl);

	if(b!=14)
	s[0]='C';
}


int power( int wykladnik)		//funkcja potegujacaa liczbe 16
{
	
	int i, p;
	
 	p=1;
	for(i=1;i<=wykladnik;++i)
	
	p=p*16;
	
	 return p;
	
}              
0

Przypisujesz n = sign w bloku sprawdzającym ifie zamiast porównać

3
int i, sign, wykl, d=0;
if ((n=sign)

używanie niezainicjalizowanej zmiennej - UB

0

faktycznie, jak moglem tego nie zauwazyc to ja nawet nie. Dzieki bardzo wszystkim!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1