Я новичок в C, начал после JavaScript и не могу привыкнуть к этим типам.C: datatypes. Функция sqrt работает с int почему?
Функция sqrt Okay math.h должна работать с удвоениями и, насколько я понимаю, в C вы не можете передавать неправильные типы в качестве параметров.
Но когда я иду:
int b = sqrt(1234); //it works
так делает
float b = sqrt(1234); // it works
int b = sqrt(1234.22) // it works
Почему все это работает? Как выглядит процесс здесь?
Мое предположение: Параметры sqrt автоматически преобразуются в double независимо от того, что я передаю, , а результат double преобразуется в int, если переменная, которую я назначаю, является типом int.
Тогда два вопроса?
1) почему я получаю сообщение об ошибке с другими функциями, если я передаю неправильный тип, но не с sqrt? 2) если мы можем просто преобразовать Int плавать как этот
float b = 123.44
int a = b;
зачем нам это нужно?
float b = 123.44
int a = (int) b;
Когда вы отправляете его как параметр, вы фактически создаете переменную типа параметра, а переданная переменная переходит к типу параметра. – bitcell
Ваша догадка правильная. 1) пример, пожалуйста, 2) он вам не нужен: http://ideone.com/x3AQqt – mch
«Почему я получаю сообщение об ошибке с другими функциями, если я передаю неправильный тип, но не с sqrt» - это не общая вещь; возможны некоторые неявные преобразования, некоторые - нет. 2. «зачем нам это нужно?» - Что заставило вас поверить, что вам это нужно? ** У вас нет. ** –