2016-04-19 3 views
1

Поэтому мне нужно создать динамическую матрицу размера, и мне нужно использовать таНос, потому что максимальный размер его должен быть 10 000. Я tryied что-то вроде этого:не может ввести значение в таНосе Matrix

double *matrix =malloc(rowCount * colCount * sizeof (double)); 

и Я добавляю значение этой матрицу с помощью этого:

for (i =0;i<rowCount;i++){ 
     for (j=0;j<colCount;j++){ 
      matrix[i* colCount+j]=(double)i;  
     } 
    } 

, но когда я хочу, чтобы получить значение с помощью этого:

for (i=0;i<rowCount;i++){ 
      for(j=0;j<colCount;j++){ 
       printf("%d",matrix[i*colCount+j]); 
      } 
      printf("\n"); 
     } 

все, что я получаю 0 на всех позициях. Любой может мне помочь и сказать, что я делаю неправильно здесь?

+3

'Е ("% d")' 'для double'? Попробуйте прочитать документацию для 'printf()'. – EOF

+0

Если вы включили предупреждения для своего компилятора, вы бы предупредили, что% d ошибается. Для gcc я использую '-Wall -pedantic', и это мне не помогает, особенно будучи новым для C. – anita2R

ответ

4

%d не предназначен для печати поплавков. Вы хотите %f

Если вы находитесь на платформе с 32-битными int и 64-битными удвоениями, ваш код печатает часть вашего поплавка, которая полностью равна 0.

https://en.wikipedia.org/wiki/Double-precision_floating-point_format

Смежные вопросы