Log in to like this post! Casting Variables in C (No, You’re Not Just Bad at Math) Dara Monasch / Thursday, January 31, 2013 Warning: I always assume that every error in my programming occurs because I am terrible at math. You can therefore imagine my shock and excitement when I learned that one of my very first errors was NOT due to my lack of mathematical prowess. So without further ado, Casting Variables in C… What *is* Casting? Casting is the act of taking one variable type and forcing a variable of another type to adopt its’ attributes in one specific instance. For example: int numerator = 20; int denominator = 7; float diff = numerator/denominator; So this program is dividing 20 by 7, so the result should be 2.86 (rounded to 2 places), right? WRONG! But… why?! Well, C looks at your lines of code with a specific order of precedence, and since the = is pretty low on the totem pole so to speak, your mathematical equation on the right is handled before the type of your answer is considered. So, when you perform a mathematical operation with two integers in C, even if you tell the program to cast the result as a float, it will do the math first, truncating its result at the integer value. Then, it will use that truncated integer result of the equation and convert it into a float. So, how do you fix it? This is where the casting comes in! It turns out that all you need to do is tell C that one of your integers should be treated as a float during your operation and voila! C knows that both items must become floats for the mathy goodness to work and thus, your problem is solved. For example: int numerator = 20; int denominator = 7; float diff = (float)numerator/denominator; There you have it! The #epiphany I came to from the first debugging instance of my CS50x class. Questions/Comments? Feel free to comment here on my blog, or find me on Twitter @DokiDara. By Dara Monasch