27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
|
||||||||||||||||
1 | ||||||||||||||||
В массив типа double записываю целые числа (типа int), но ошибка не вылазиет!26.03.2012, 13:09. Показов 3051. Ответов 8
Метки нет (Все метки)
Вот программулька:
Хотя всё работает и так. Почему?
0
|
26.03.2012, 13:09 | |
Ответы с готовыми решениями:
8
Можно ли из числа типа double получить 2 числа типа int? Как преобразовать дробную часть числа типа double в int Передать массив элементов(типа int) объекта, в функцию из массивов(типа int) Создать динамический массив, любого простого типа (например: int, long, float, double) |
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
26.03.2012, 13:14 | 2 |
компилятор сам добавит нолик
Добавлено через 20 секунд неявное преобразование в double
1
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|
26.03.2012, 13:15 | 3 |
Alex Z, В данном случае ваш int будет приведен автоматический к double. (Но лучше это делать явно)
Что же касается sqrt, так она перегружена. И к какому значению необходимо приводить ваш int(т.е. какую из перегруженных функций вызывать) компилятор не знает.
1
|
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
|
|
26.03.2012, 13:19 [ТС] | 4 |
Это как бы "Преобразование типов" называется?
А как заранее угадать, где будет преобразование типов, а где сообщение об ошибке?
0
|
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
26.03.2012, 13:22 | 5 |
1
|
Модератор
12459 / 7483 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
26.03.2012, 14:29 | 6 |
Лучше вообще не гадать, а приводить данные к нужному типу. В общем случае там, где требуется double, целочисленное значение будет преобразовано автоматически, там, где есть варианты (перегруженная функция в С++ к примеру), нужно самому уточнять, что именно передаёшь. В С вот такой код работает:
Код
[andrew@ftp ~/cpp]$ cat > sqrt5.c #include <stdio.h> #include <math.h> int main(void){ printf("%f\n", sqrt(5)); return 0; } [andrew@ftp ~/cpp]$ gcc -o sqrt5 sqrt5.c [andrew@ftp ~/cpp]$ ./sqrt5 2.236068
1
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
||||||
26.03.2012, 20:22 | 7 | |||||
Ну в данном случае не из-за языка он не отработает. Вот вариант, когда и С++ отработает
Вообще лучше шаблонные функции использовать.
1
|
Модератор
12459 / 7483 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
26.03.2012, 20:53 | 8 |
Ну да, так-то перегрузка функций и пространства имён и в С есть, только как там ими пользоваться, никто не знает...
Мало того! Код
andrew@rd-andrew ~/cpp/shitcode $ cat > sqrt5.cpp #include <iostream> #include <math.h> int main(){ std::cout << sqrt(5) << std::endl; return 0; } andrew@rd-andrew ~/cpp/shitcode $ g++ -o sqrt5 sqrt5.cpp andrew@rd-andrew ~/cpp/shitcode $ ./sqrt5 2.23607 andrew@rd-andrew ~/cpp/shitcode $
0
|
go
|
26.03.2012, 21:49
В массив типа double записываю целые числа (типа int), но ошибка не вылазиет!
#9
|
0
|
26.03.2012, 21:49 | |
Как из числа типа double сделать int (сохранение целой и дробной части в отдельных целочисленных переменных) Ошибка "Аргумент типа int несовместим с параметром типа int". Буду признателен за подсказку! Перевести строку типа char в массив типа int Считать числа типа double из файла и записать их в массив Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |