Хотелось бы также предупредить начинающих о типичной ошибке. Пример кода:
double a, с, d;
....
....
....
d = a - с;
if (d == (a - с))
{
// ветка 1
}
else
{
// ветка 2
}
На первый взгляд, ветка 2 никогда не отработает, но это не так! Никогда не стоит сравнивать в условии значения переменных и значения выражений. Значения переменных при занесении округляются до ближайшего представителя, а значения выражений - не всегда. В итоге программа может приподнести кучу сюрпризов, и найти подобную ошибку порой очень сложно.