标题:怎么消除这条警告?conversion from 'int ' to 'float
只看楼主
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
结帖率:100%
已结贴  问题点数:20 回复次数:12 
怎么消除这条警告?conversion from 'int ' to 'float
程序如下,执行求余运算没有问题。但总是提示int型转换float型可能会丢失数据。怎么解决?求教
程序代码:
#include<stdio.h>
int main()
{
    float a,b,num;//定义三个浮点型变量
    char c,y;//定义一个字符变量
    printf("\t\t\t简单计算器\n");
dz:printf("请输入表达式:(可以执行+-*/%%运算)\n");
   scanf("%f%c%f",&a,&c,&b);
    if(c=='+')
    {
        num=a+b;
    }
    else if(c=='-')
    {
        num=a-b;
    }
    else if(c=='*')
    {
        num=a*b;
    }
    else if(c=='/')
    {
        num=a/b;
    }
    else if(c=='%')
        {
            num=(int)a%(int)b;
        }
    printf("%.2f%c%.2f =%.2f\n\n",a,c,b,num);
    printf("是否继续?继续请按y,退出请按n:\n");
    getchar();
    scanf("%c",&y);
    if(y=='y'||y=='Y')
    {
        goto dz;
    }
    return 0;
}

    
搜索更多相关主题的帖子: conversion 
2014-04-04 14:56
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:0 
本想用switch语句来执行的,if语句实在不好看

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 14:58
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:0 
用了switch语句,好看多了。。可是警告无法消除,求指教啊。
程序代码:
#include<stdio.h>
int main()
{
    float a,b,num;//定义三个浮点型变量
    char c,y;//定义一个字符变量
    printf("\t\t\t简单计算器\n");
dz:printf("请输入表达式:(可以执行+-*/%%运算)\n");
   scanf("%f%c%f",&a,&c,&b);
    switch(c)
    {
    case '+':num=a+b;
    break;

    case '-':num=a-b;
    break;

    case '*':num=a*b;
    break;

    case '/':num=a/b;
    break;

    case '%':num=(int)a%(int)b;
    break;

    default:num=0;
    }
    printf("%.2f%c%.2f =%.2f\n\n",a,c,b,num);
    printf("是否继续?继续请按y,退出请按n:\n");
    getchar();
    scanf("%c",&y);
    if(y=='y'||y=='Y')
    {
        goto dz;
    }
    return 0;
}

    

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 15:09
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
得分:7 
num=(int)a%(int)b;把一个高精度(float)的数强制转换为低精度(int)的数,肯定会警告你的。比如a=2.3用int t=(int)a后t=2了。
2014-04-04 15:14
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:0 
回复 4楼 shmilyflf
如何解决啊?难道求余这段必须舍弃吗?

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 15:17
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
得分:7 
num=(int)a%(int)b;这句改成num=(float)((int)a%(int)b),只不过你余除的结果怎么要存到float型数据中
2014-04-04 15:33
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
得分:0 
或者余除这块你加个整除的变量也行
2014-04-04 15:33
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:7 
以下是引用安宁1991在2014-4-4 15:17:34的发言:

如何解决啊?难道求余这段必须舍弃吗?


是你要进行强制转换的  还咋解决啊

DO IT YOURSELF !
2014-04-04 15:36
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:0 
重新研究了下,终于不会报警了!有哪位大大可以帮我测试下会不会报警啊?我用的是vc++6.0。
程序代码:
#include<stdio.h>
int qy(int x,int y)
{
    return x%y;
}
int main()
{
    float a,b,num;//定义三个浮点型变量
    char c,y;//定义一个字符变量
    printf("\t\t\t简单计算器\n");
dz:printf("请输入表达式:(可以执行+-*/%%运算)\n");
   scanf("%f%c%f",&a,&c,&b);
    switch(c)
    {
    case '+':num=a+b;
    break;

    case '-':num=a-b;
    break;

    case '*':num=a*b;
    break;

    case '/':num=a/b;
    break;

    case '%':num=qy((int)a,(int)b);
    break;

    default:num=0;
    }
    printf("%.2f%c%.2f =%.2f\n\n",a,c,b,num);
    printf("是否继续?继续请按y,退出请按n:\n");
    getchar();
    scanf("%c",&y);
    if(y=='y'||y=='Y')
    {
        goto dz;
    }
    return 0;
}

   

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 15:39
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
知道char的表达范围吗

DO IT YOURSELF !
2014-04-04 15:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-429687-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.306515 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved