C : Discount Question | Sololearn: Learn to code for FREE!


C : Discount Question

A very strange behavior I notice today while solving a pretty simple question... =================== Cost Price and Discount(%) is given, find Selling Price =================== #include <stdio.h> #include <stdlib.h> int main() { int b, d, p; //b is CP, d is Discount Rate, p is SP scanf("%d\n%d", &b, &d); p = b-(b*d/100); // This is where i want to stress printf("%d", b); printf("\n%d", p); return 0; } =================== In the above code, if I change, this line -> "p = b-(b*d/100);" to -> "p = b-(b*(d/100));" the answer goes wrong, completely!!! =================== Really strange, just for a parenthesis!!! - my intention on giving it was just to make C understand it well, but went hard on me. =================== If anyone can help me correct my wrong concept, it would be really appreciated... Thanks

4/10/2021 9:37:40 AM

Arun Bhattacharya

4 Answers

New Answer


d/100 is always 0. Because d is integer, 100 is integer, and d is between 0 to 100. int / int = int. b*d is still integer, but is larger than 100, which produces an integer greater than 0.


Thanks CarrieForle


You can also use scanf("%f%f) instead of using escape sequence in between.


The remainders (or modulo) are dropped from integer math in C. You can change your variable types to float or cast for the math. However I would use the float type variables and if you are looking for whole numbers utilize the rounding functions.