#include <stdio.h>
int main(void) {
unsigned x;
double f;
x = 100;
f = -x/10.0;
printf("%1.6f\n", f);
return 0;
}
как думаете что выведет эта программа?
Оказывается тут минус выполняется раньше деления, так что выводит она большое положительное число.
А правильно вот так:
f = -(x/10.0);
f = 0-x/10.0;
Я несколько разочарован данной неконсистентностью оператора вычитания, хотя наверно и понятно откуда так получилось: выражение типа -1.0/2.0 должно считаться в одно действие (деление -1 на 2) а не в два (сначала 1/2 а потом сменить знак), а поведение минуса перед числовым литералом и перед переменной сделали единообразным чтобы от препроцессора дополнительные сюрпризы не обнаруживались.
А вы знали об этом? Или может быть вообще не задумывались? (тут три варианта: знал правильно, знал неправильно, не думал)


















