Bob Jones wrote:
"Don" <[email protected]> wrote in message
news:[email protected]...
Bob Jones wrote:
"Don" <[email protected]> wrote in message
news:[email protected]...
bearophile wrote:
Don:
In Pascal too (and OCaML, but the situation is different) they are
separated. I think here having two operators is better,
Why?
You are intelligent and expert so you must know my answer, so I fear
yours is a trick question :-)
No, it's not a trick question. You've used Python extensively, I
haven't.
Two operators allow to reduce the need for casts (and
rounding/truncation), and are more explicit, allowing the code to
express its meaning better to people that come after the original
programmer.
OK. I'm trying to get most of the benefits without needing an extra
operator.
Having made the switch from Delphi to C++ a few years ago I ran into this
alot. I dislike that I have to litter my arithmetic expresions with casts
in order to get the division operator to do what I want it to. And I
suspect all of those who are used to having seperate intdiv & fltdiv
operators will agree.
Your arithmetic expressions would only become "littered with casts" if you
regularly use integer division inside floating-point expressions.
Personally, I cannot recall *ever* having intentionally used integer
division inside a floating point expression. (I've seen inadvertent uses
of it, plenty of times).
I grepped around 60 instances of
double y = a / double(b);
In my last project. That's what I'm talking about. Where you have to cast
either top or bottom to float in order to get the division operator to do
float division of two int operands.
OK, I misunderstood you. You're completely right. At least my proposal
won't let them slip through silently. I don't think we can do anything
else without silently breaking C compatibility.
There's also the (perhaps MSVC specific) issue that I have to cast doubles
to floats to get rid of the loss of precision warning message. It's a usuful
warning on ints, but for floats it's completely redundant imo.
The fact that adding a specific intdiv operator would not only avoid more
casting, but remove the the need for casting in a lot of existing cases
I bet there are negligible cases where casting is required.
I didnt find any instances of an expresion containg intdiv being assigned to
a float, so yeah, that is rare. But not the case where you have two ints and
want the actual division done in float.