Ниже мой кодПочему только эти цифры напечатаны
main()
{
int c[ ]={2.8,3.4,4,6.7,5};
int j,*p=c;
for(j=0;j<5;j++){
printf(" %d ",*p);
++p; }
}
Выход был
2 3 4 6 5
Как выше код выполняется?
Ниже мой кодПочему только эти цифры напечатаны
main()
{
int c[ ]={2.8,3.4,4,6.7,5};
int j,*p=c;
for(j=0;j<5;j++){
printf(" %d ",*p);
++p; }
}
Выход был
2 3 4 6 5
Как выше код выполняется?
int c[]
- целое число. Вы можете попробовать.
float c[] = { 2.8, 3.4, 4, 6.7, 5 };
float *p = c;
for (int j = 0; j<5; j++){
printf(" %f ", *p);
p = p+1;
}
он выполняется именно они, как вы думаете, что это выполняется: печатать элементы массива в вашем for
цикле, однако, вы сделали элементы массива, как int
, поэтому при печати 2.8
, который дважды, компилятор игнорирует любой другой после точки, значит, он видит это как 2, а не 2,8
Когда вы пишете заявление:
int c[ ]={2.8,3.4,4,6.7,5};
десятичные значения автоматически преобразуются в integers.So тыс е массивные магазины
2,3,4,6,5
Таким образом, ваш выход становится таким, какой он есть. Для работы с десятичными знаками используйте переменные типа float.
float c[ ]={2.8,3.4,4,6.7,5};
, если вы используете «поплавок J» вместо «Int J» и «% F» вместо «% D» вы получите то, что вы хотите. Здесь из-за использования int j и% d печатается только часть до десятичной точки каждого числа в массиве.
Используйте отладчик с часами, чтобы увидеть, как изменяются переменные! – Abhishek