I\'m new to the C language, rather programming overall. I was wondering why is it that when I declare a variable to be used within an if statement OUTSIDE the structure, that th
The relevant code boils down to:
double tax;
netpay = grosspay - grosspay * tax;
tax = 0.10;
printf("Net pay: $%.2f\n", netpay);
The problem with this is that statements in a program are executed in the order you've written them (at least within a function, barring special control flow statements such as continue
or goto
).
Thus:
tax
, which is uninitialized.netpay
to the result of grosspay - grosspay * tax
. This is already wrong because tax
has no defined value at this point, so grosspay - grosspay * tax
produces undefined results.tax
. This has no effect on the value of netpay
.netpay
.Things are happening in the wrong order. You need to set variables before you use them.
It's like you're telling someone:
And you're wondering why they're not reading from The Lord of the Rings.
Maybe you are trying to eliminate the duplicate code. Since the difference between the if
blocks is the tax rate, you could set the rate and at the end make one calculation.
#include<stdio.h>
void grossPay();
int main()
{
grossPay();
}
void grossPay()
{
int rate = 10, hours;
double tax, grosspay, netpay;
printf("Enter work hours this week: ");
scanf("%d", &hours);
grosspay = hours * rate;
if (grosspay <= 300 && grosspay > 0)
{
tax = 0.10;
}
else if (grosspay > 300 && grosspay <=1000)
{
tax = 0.15;
}
else if (grosspay > 1000)
{
tax = 0.25;
}
else
{
printf("Invalid input. Please try again.\n\n");
return;
}
netpay = grosspay - grosspay * tax;
printf("Pay for %d hours of week with $%d per hour\n", hours, rate);
printf("Gross pay: $%.2f\n", grosspay);
printf("Net pay: $%.2f\n", netpay);
}