同学们! -1.#R 是什么意思?以及为什么会输出这个?
以下代码目的:输入一个形式如“操作数 运算符 操作数”的表达式,对2个整数进行乘、除或求余运算。出问题行在:case '/':printf("%f/%f=%.2f\n",a,b,(float)a/b);
我想知道:-1.#R 是什么意思?以及为什么会输出这个?
#include <stdio.h>
int main()
{
char ch;
int a,b;
printf("操作数 运算符 操作数: ");
scanf("%d%c%d",&a,&ch,&b);
switch(ch){
case '*':printf("%d*%d=%d",a,b,a*b);break;
case '/':printf("%f/%f=%.2f\n",a,b,(float)a/b);
printf("%.2f",(float)a/b);break;
case '%':printf("%d%%%d=%d",a,b,a%b);break;
}
}
本帖最后由 jackz007 于 2022-10-20 16:21 编辑
没别的,一切的原因是,你用 %f 显示了一个整型数
#include <stdio.h>
int main()
{
char ch ;
int a,b ;
printf("操作数 运算符 操作数: ");
scanf("%d%c%d",&a,&ch,&b);
switch(ch){
case '*':printf("%d*%d=%d",a,b,a*b);break;
case '/':printf("%d/%d=%.2f\n",a,b,(float)a/b); // 这里有修改,把 "%f/%f=%.2f" 改为 "%d/%d=%.2f"世界就太平了
printf("%.2f", (float)a/b) ; break;
case '%':printf("%d%%%d=%d",a,b,a%b);break;
}
}
jackz007 发表于 2022-10-20 16:20
没别的,一切的原因是,你用 %f 显示了一个整型数
%.2f 对应的不是(float)a/b?
为什么这一项不能正常输出? 未被驯化的甲鱼 发表于 2022-10-20 18:27
%.2f 对应的不是(float)a/b?
为什么这一项不能正常输出?
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
操作数 运算符 操作数: 1/2
1/2=0.50
0.50
D:\\C>
难道这个结果还没有正常输出? 会不会是读入的原因? jackz007 发表于 2022-10-20 18:33
编译、运行实况:
难道这个结果还没有正常输出?
不是,我输出的是 -1.#R
你直接复制我的代码运行试试? 未被驯化的甲鱼 发表于 2022-10-22 15:16
不是,我输出的是 -1.#R
你直接复制我的代码运行试试?
我贴了一份修改过的代码在 2 楼,我让你编译运行的是它! jackz007 发表于 2022-10-20 18:33
编译、运行实况:
难道这个结果还没有正常输出?
c-free5输出不行
我用vs code又可以了
不知道为什么
页:
[1]