Код: Выделить всё
string photo(unsigned int n)
{
char hex[17]="0123456789abcdef";
string ph_no;
int i=0;
unsigned int no=n;
while ((no-pow(16,i))>1)i++;
i=i-1;
int j=0;
unsigned int k=0;
unsigned int he=0;
for(;i>=0;i--)
{ if(i>0)he=pow(16,i);
k=(no-no%he)/he;
if(no>15)no=no%he;
if(k<17)ph_no[j]=hex[k];
j++;
}
return ph_no;
}
int main(int argc, char *argv[])
{
.....
string ch;
ch=photo(2114948818);
.....
}в принципе код выполняеться (если ставить брейкпоинты в KDevelop), но если компилируешь при запуске посылаеться сигнал SIGSEGV (Segmentation fault).
В случае если возвращать не string а char*, то такая же фигня. Но если брать мелкие числа, то все нормально.
Однако, в справочниках писано, что unsigned int принадлежит [0;+4,294,967,295]. Пробывал long, double, float - везде одно и тоже.
Прошу помощи.