Выполнение операций между int и double
У меня есть домашнее задание на базовом языке Си, в котором меня просят вычислить определенные выражения, а затем проверить мои ответы в программе. Мне кажется, что я не могу получить ни один из этих ответов правильно по моим собственным расчетам...
Они хотят, чтобы я решал математические задачи, используя эти переменные:
int a = 2;
double b = 4.7;
int c = 3;
double d = 4.2;
Вот пример вопроса:
int answer1 = b+a/c-d;
Я понимаю, что поскольку он имеет операнд int, то все переменные преобразуются в целое число, поэтому он должен выглядеть примерно так: I подумайте:
(4+2)/(3-4)
Я получил -6 в качестве ответа, когда делал это вручную, но когда я ввел его в виде кода, он дал мне ответ 0. Кто-нибудь может это объяснить? Я неправильно выполняю порядок операций? Я просто не понимаю, как компьютер получает 0 из этого. Это самый простой вопрос в моем домашнем задании, и я понятия не имею. Пожалуйста, помогите!
2 ответа:
Ваше выражение
b+a/c-d
То же самое, что
Поскольку иb + (a/c) - d
a
, иc
являются целыми числами, то частноеa/c
вычисляется с помощью целочисленного деления. Это дает2/3 = 0
. Итак, у вас есть:b - d
Это вычисляется с плавающей точкой, так как
b
иd
являютсяdouble
. Результат равен 0.5, который при присвоении результатуint
усекается до 0.