Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C /操作不需要';Don’别给我结果_C - Fatal编程技术网

C /操作不需要';Don’别给我结果

C /操作不需要';Don’别给我结果,c,C,大家好,基本上我有一个C语言的计算器,但每当我尝试4/8,它就会给我0.000000。有什么帮助吗 #include <stdio.h> int main() { char action; int number,number1; float resultat; do { printf ("Choisit votre opérateur logique\n"); scanf("%c", &action); } whil

大家好,基本上我有一个C语言的计算器,但每当我尝试4/8,它就会给我0.000000。有什么帮助吗

#include <stdio.h>
int main()
{ 
char action;
int number,number1;
float resultat;
do 
{
    printf ("Choisit votre opérateur logique\n");
    scanf("%c", &action);
} while (!((action == '/') ||(action == '-') ||(action == '+') ||(action == '*')  ));
switch (action)
{
    case '/':
    scanf("%d %d", &b,&c );
    resultat = number / number1;
    printf("Votre opéation a donné comme un résultat :  %f ", resultat);
    break;
#包括
int main()
{ 
炭作用;
整数,数字1;
浮动结果;
做
{
printf(“Choisit votre opérater logique”);
scanf(“%c”、&action);
}而(!((action='/')|(action='-')|(action='+')|(action='*'));
开关(动作)
{
案例“/”:
scanf(“%d%d”、&b和&c);
结果=数字/数字1;
printf(“对结果的意见:%f”,结果);
打破
(代码未完成,因为重置工作正常,不需要任何帮助)感谢在“C”中,整数之间的除法(或进行任何其他数学运算)将执行整数运算。对于除法,它将截断结果。您可以通过将其中一个参数强制转换为浮点(或双精度)来强制计算为浮点)

如果没有强制转换,代码首先计算4/8,得到(整数)0,然后将其转换为浮点0

    case '/':
    scanf("%d %d", &b,&c );
    d = ((float) b) / c;
    printf("Votre opéation a donné comme un résultat :  %f ", d);
    break;

代码中的
b
c
是整数,因此程序正在执行整数除法,这将给出整数结果

如果要执行浮点除法,则需要在执行除法时将值强制转换为浮点:

d = (float)b / (float)c;

整数除法给出整数结果-如果
b
c
都是整数且
b
,则
b/c
将产生
0

将所有
b
c
d
声明为
double
,并使用
%lf
读取
b
c

double b, c, d;
...
scanf("%lf %lf", &b,&c );
d = b / c;

4/8
是整数算术世界中的
0
。既然您正在与其他人共享此代码,您应该对其进行编辑,以便不太熟悉的人更容易阅读(这包括您自己,因为您肯定会忘记今天上午的想法)例如,
a
应该是
operation\u symbol
b
c
可以是
operan1
operan2
d
可以是
结果
,等等。如果您正在编写计算器,请使用
double
。事实上,当您需要浮点变量时,请使用
double
,除非有很好的理由不这样做。捕捉得好。
printf
scanf
之间的不对称有时会让人恼火。