我正在用C编写一个非常基本的程序(对C来说是新东西,所以只需要掌握一些东西),而且我正在为TypeCasting而努力。为什么我需要在此处指定所有值?
这是一个简单的计算程序,它允许你输入两个数字并决定你想要对它们做什么(加,减,除,乘)。显然,并非所有的数字都可以被所有其他数字整除,所以在我的switch语句中,我试图将int转换为float。
按照要求,我的变量声明在这里:
int inputOne, inputTwo, calculatedValue = 0;
char calcType;
char restart = 'n';
我知道了通过使所有类型强制转换值的工作,但这里是我尝试之前:
case 'd': case 'D':
calculatedValue = inputOne/inputTwo;
printf("%s%d%s%d%s%1.2f", "The value of ", inputOne, " divided by ", inputTwo, " is equal to ", (float)calculatedValue);
printf("\nPlease note: This is only accurate to two decimal places.");
break;
这只返回4没有任何小数位。然后我想也许这是由于计算仍处于INT,所以我改成了这样:
case 'd': case 'D':
(float)calculatedValue = inputOne/inputTwo;
printf("%s%d%s%d%s%1.2f", "The value of ", inputOne, " divided by ", inputTwo, " is equal to ", (float)calculatedValue);
printf("\nPlease note: This is only accurate to two decimal places.");
break;
但这只是回报1082130432.00。不知道这个数字来自哪里。
我周围有使用这样的:
case 'd': case 'D':
printf("%s%d%s%d%s%1.2f", "The value of ", inputOne, " divided by ", inputTwo, " is equal to ", (float)calculatedValue = (float)inputOne/(float)inputTwo);
printf("\nPlease note: This is only accurate to two decimal places.");
break;
因为它是在一个switch语句,我可以只使用一个浮动的,而不是用原来的整数传开,但我已经做了这个代码试着更好地理解类型转换,并且在不需要对所有东西进行类型转换的情况下都能够工作。任何人都可以照耀一些光明?我的讲师在printf中使用了类型转换,它工作得很好。在他的榜样,他试图寻找学生的平均年龄,他这样做是这样的:
printf("\nAverage age: %1.2f", (cAge1 + cAge2 + cAge3)/(float)cNumStudents);
希望这有意义,因为它是一个简单的问题这么久对不起,我只是想了解为什么我不得不强调一切(因为我的讲师说你只需要做到一个价值)。
干杯
编辑:
我只是尝试以下,但它返回0.00,而不是答案。
calculatedValue = (float)inputOne/inputTwo;
printf("%s%d%s%d%s%1.2f", "The value of ", inputOne, " divided by ", inputTwo, " is equal to ", calculatedValue);
printf("\nPlease note: This is only accurate to two decimal places.");
break;
不是答案,但请注意'(float)something = something' [在标准C中无效](http://coliru.stacked-crooked.com/a/e99279b49f399697)。 – HolyBlackCat
您的变量的声明丢失。请出示[MCVE]。你确定'inputOne'和'inputTwo'包含你期望的值吗? –
答案完全取决于'inputOne'和'inputTwo'是如何声明的。他们是“int”还是“double”,或者是什么? –