Функциональное приведение типов?
В первом случае сначала приводится 1 к double явно, потом неявно 3 в double, т.к. первый аргумент операции дабл, а потом выполняется деление двух даблов.
Во втором случае выполняется целочисленное деление с результатом 0, затем 0 приводится к даблу.
Вот пары эквивалентных примеров// Что то вроде 0.3333333
std::cout<< (double) 1 / 3 ; 
std::cout<< double(1) / 3 ;std::cout<< double (1 / 3) ; 
std::cout<< (double) (1 / 3) ;