LINUX.ORG.RU

Это баг или я дурак?

 


0

1

Простенький кусочек кода. С какого хрена результаты разные всегда?

#include <stdio.h>
void csilus(int byte)
{

float bit=8*byte;//Количество бит
float degree=bit;//степень
float res=2;     //Модуль

while(degree!=0)
  {
    res=res*bit;
    degree--;
  };
 
   printf("\n[%d]____[%d]\n",res,res);
       
};


int main()
{    
   
     csilus(sizeof(unsigned int));

     return 0;
};
★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

Выхлоп программки мне не понятен

[441289192]____[441289208]
dron@gnu:~$ '/home/dron/a.out' 

[-1308708888]____[-1308708872]
dron@gnu:~$ '/home/dron/a.out' 

[749458888]____[749458904]
dron@gnu:~$ '/home/dron/a.out' 

[776570280]____[776570296]
dron@gnu:~$ 


Dron ★★★★★
() автор топика

f Decimal floating point, lowercase 392.65 F Decimal floating point, uppercase 392.65

visual ★★★
()

ну у тебя же float, выводи его как float %f

x0r ★★★★★
()
test.c:15:4: предупреждение: format «%d» expects argument of type «int», but argument 2 has type «double» [-Wformat]
test.c:15:4: предупреждение: format «%d» expects argument of type «int», but argument 3 has type «double» [-Wformat]

Если сделать %lf то все становится ок:

[inf]____[inf]

morse ★★★★★
()

%f

Вывод я дурак :(

Ладно всем спасибо :)

Dron ★★★★★
() автор топика

не %d, а %f

//не читал

jcd ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.