在 2013-03-20三的 08:24 -0600,Eric Blake写道: > On 03/20/2013 12:06 AM, li guang wrote: > > >> + return snprintf(dest, len, "%0.03f%c", (double)*ptr/div, suffixes[i]); > > ^^^^^^ ^^^^^^^^^^^^^^^ > >> +} > >> + > > > > IMHO, you may need (double)(*ptr/div), for type cast is right > > associated. > > No, the code as written is correct, and your proposal would be wrong. > As written, it is evaluated as: > > ((double)*ptr) / div > > which promotes the division to floating point. Your proposal would do > the division (*ptr/div) as an integral (truncating) division, and only > then cast the result to double. >
Yes, you're right, amazing c type cast!