Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > difference between statement

Reply
Thread Tools

difference between statement

 
 
ashu
Guest
Posts: n/a
 
      05-03-2012
Dear Sir ,
i am writing a simple C programme but i am facing a problem kindly
sort it out for me

#include<stdio.h>
#include<conio.h>

main()
{
float fahr,celsius;

celsius= -17;
fahr=celsius * (9/5) + 32;
printf("%3.1f\n",fahr);

getch();
}
Result is 15.0
but when i write: fahr=celsius * 9/5 + 32;
result is : 1.4
i can`t figure it out why 1st statement is not working.am i doing
something wrong.i am using dev C++ compiler .
 
Reply With Quote
 
 
 
 
John Gordon
Guest
Posts: n/a
 
      05-03-2012
In <(E-Mail Removed)> ashu <(E-Mail Removed)> writes:

> Dear Sir ,
> i am writing a simple C programme but i am facing a problem kindly
> sort it out for me


> #include<stdio.h>
> #include<conio.h>


> main()
> {
> float fahr,celsius;


> celsius= -17;
> fahr=celsius * (9/5) + 32;
> printf("%3.1f\n",fahr);


> getch();
> }
> Result is 15.0
> but when i write: fahr=celsius * 9/5 + 32;
> result is : 1.4
> i can`t figure it out why 1st statement is not working.am i doing
> something wrong.i am using dev C++ compiler .


This expression:

(9/5)

is composed entirely of integers, therefore it is computed using integer
math, which discards the fractional part and evaluates to 1.

So your program is really doing this calculation:

fahr = -17 * 1 + 32

Which evaluates to 15.

To fix this behavior, get in the habit of adding .0 after any number
that you want to be treated as a float, like so:

fahr = celsius * (9.0/5.0) + 32.0;

This will give the correct results.

(Your second example works because without the parentheses, the first
operation is to multiply celsius by 9. One of those numbers is a float,
so the calculation is done as a float. Then that result is divided by
five, and again one of the numbers is a float, so the calculation is done
as a float.)

--
John Gordon A is for Amy, who fell down the stairs
http://www.velocityreviews.com/forums/(E-Mail Removed) B is for Basil, assaulted by bears
-- Edward Gorey, "The Gashlycrumb Tinies"

 
Reply With Quote
 
 
 
 
James Dow Allen
Guest
Posts: n/a
 
      05-03-2012
On May 3, 9:14*pm, ashu <(E-Mail Removed)> wrote:
> * * * fahr=celsius * (9/5) + 32;


(9/5) is 1

Write something else, e.g. (9.0/5) or even (1.
if you want 1.8 instead of 1.

> but when i write: fahr=celsius * 9/5 + 32;
> result is : 1.4


That statement happens to lead to a chain of
promotions that work as you intend.
Better, however, is to avoid confusion or
incorrectness by avoiding integer when you
want floats. Thus write
fahr=celsius * 9./5. + 32.;
and don't worry about promotions.

> i am using dev C++ compiler


Oh, C++. That's that language two doors down the hall?
The language that magically handles typing for you?

That you have the above confusion and had to come
to the C forum (not a C++ forum) to get it corrected
tells us something about C++.

James
 
Reply With Quote
 
Fred K
Guest
Posts: n/a
 
      05-03-2012
On Thursday, May 3, 2012 7:14:10 AM UTC-7, ashu wrote:
> Dear Sir ,
> i am writing a simple C programme but i am facing a problem kindly
> sort it out for me
>
> #include<stdio.h>
> #include<conio.h>
>
> main()
> {
> float fahr,celsius;
>
> celsius= -17;
> fahr=celsius * (9/5) + 32;
> printf("%3.1f\n",fahr);
>
> getch();
> }
> Result is 15.0
> but when i write: fahr=celsius * 9/5 + 32;
> result is : 1.4
> i can`t figure it out why 1st statement is not working.am i doing
> something wrong.i am using dev C++ compiler .


(9/5) equals 1 so celsius * (9/5) equals celsius
 
Reply With Quote
 
BartC
Guest
Posts: n/a
 
      05-03-2012


"ashu" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...

> #include<stdio.h>
> #include<conio.h>
>
> main()
> {
> float fahr,celsius;
>
> celsius= -17;
> fahr=celsius * (9/5) + 32;
> printf("%3.1f\n",fahr);
>
> getch();
> }
> Result is 15.0
> but when i write: fahr=celsius * 9/5 + 32;
> result is : 1.4


Using floating point constants instead, such as 9.0/5.0, otherwise integer
arithmetic can sometimes give these funny results (9/5 is 1 according to C).

--
Bartc

 
Reply With Quote
 
ashu
Guest
Posts: n/a
 
      05-04-2012
Thankx for all help


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
what is the difference between these statement ashu C Programming 20 05-14-2012 06:46 PM
Difference between declaring a variable in a for() and an if() statement Juha Nieminen C++ 5 06-26-2009 09:06 AM
Difference between Statement and preparedStatement (for SQL databases) ? Ken Philips Java 4 11-05-2008 01:04 AM
difference between a statement and expression arnuld C++ 4 06-26-2007 06:55 PM
Difference between bin and obj directories and difference between project references and dll references jakk ASP .Net 4 03-22-2005 09:23 PM



Advertisments