|Mandalika's scratchpad||[ Work blog @Oracle | Stock Market Notes | My Music Compositions ]|
ceil()returns an incorrect value?
ceil() rounds the argument upward to the nearest integer value in floating-point format. For example, calling
ceil() with an argument (2/3) should return 1.
printf("\nceil(2/3) = %f", ceil(2/3));
ceil(2/3) = 0.000000
.. which is not the expected result.
printf("\nceil((float)2/3) = %f", ceil((float)2/3));
shows the expected result.
ceil((float)2/3) = 1.000000
The reason for the incorrect result in the first attempt can be attributed to the integer division. Since both operands in the division operation are integers, it resulted in an integer division which discarded the fractional part.
Desired result can be achieved by casting one of the operands to float or double as shown in the subsequent attempt.
One final example for the sake of completeness.
printf("\nceil(2/(float)3) = %f", ceil(2/(float)2)); .. ceil(2/(float)3) = 1.000000
On a very high level:
SIGABRT signal causing abnormal termination of the target process without calling functions registered with
atexit() handler, and results in a core dump. Some cleanup activity may happen.
exit() causes normal process termination after executing functions registered with the
atexit() handler, and after performing cleanup activity such as flushing and
closing all open streams.
If it is desirable to bypass
atexit() registered routine(s) during a process termination, one way is to call
_exit() rather than
Of course, this is all high level and the information provided here is incomplete. Please check relevant man pages for detailed information.
The following sample code shows the current timestamp in two different formats. Check relevant man pages for more information.
#include <time.h> .. char timestamp; time_t now; struct tm *curtime; now = time(NULL); curtime = localtime(&now); strftime(timestamp, sizeof(timestamp), "%m-%d-%Y %X", curtime); printf("\ncurrent time: %s", timestamp); printf("\ncurrent time in a different format: %s", asctime(curtime)); ..
Executing this code shows output
current time: 07-31-2014 22:05:42 current time in a different format: Thu Jul 31 22:05:42 2014
Labels: C programming tidbits tips