| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 982 人关注过本帖
标题:关于某个圆括号里面的float的问题~
只看楼主 加入收藏
davidguhao
Rank: 1
来 自:广东
等 级:新手上路
帖 子:126
专家分:7
注 册:2016-7-18
结帖率:89.47%
收藏
 问题点数:0 回复次数:7 
关于某个圆括号里面的float的问题~
程序代码:
// union2.c--联合的典型用法

#include <stdio.h>

#define CHARACTER 'c'
#define INTEGER 'I'
#define FLOAT 'F'

struct generic_tag{
    char type;
    union shared_tag{
        char c;
        int i;
        float f;
        }shared;
};

void print_function(struct generic_tag generic);

int main(void)
{
    struct generic_tag var;
    
    var.type = CHARACTER;
    var.shared.c = '$';
    print_function(var);

    var.type = FLOAT;
    var.shared.f = (float) 12345.67890;
    print_function(var);

    var.type = 'x';
    var.shared.i = 111;
    print_function(var);
    return 0;
}

void print_function(struct generic_tag generic)
{
    printf("\n\nThe generic value is...");
    switch (generic.type)
    {
    case CHARACTER:    printf("%c", generic.shared.c);
    break;
    case INTEGER:    printf("%d", generic.shared.i);
    break;
    case FLOAT:    printf("%f", generic.shared.f);
    break;
    default:    printf("an unknown type: %c\n",
    generic.type);
    break;
    }
}

问题在于
var.shared.f = (float) 12345.67890;
中为什么要加上float
有什么必要吗?是强制换格式?
2016-08-08 23:36
zx315
Rank: 5Rank: 5
来 自:广东
等 级:职业侠客
威 望:2
帖 子:86
专家分:378
注 册:2016-7-13
收藏
得分:0 
浮点数默认是 double 类型,所以需要强制转换一下

Read The Fucking Source Code~
2016-08-08 23:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
var.shared.f = (float) 12345.67890;
--->
var.shared.f = 12345.67890f;
2016-08-09 08:43
davidguhao
Rank: 1
来 自:广东
等 级:新手上路
帖 子:126
专家分:7
注 册:2016-7-18
收藏
得分:0 
回复 3楼 rjsp
什么意思?

暨南大学市场营销……
但是我有一颗计算机专业的心……
2016-08-09 09:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用davidguhao在2016-8-9 09:38:04的发言:

什么意思?
直接写个float类型的常量 12345.67890f 就行了
不需要写个double类型的常量 12345.67890 然后再强制转化
2016-08-09 09:40
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
你试图把一ge double类型的数据赋值给float类型,因为类型不同,所以要用(float)强制转换。。。

φ(゜▽゜*)♪
2016-08-09 13:13
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
数据范围不一样

我不是砖家,要努力成为砖家。
2016-08-09 16:20
davidguhao
Rank: 1
来 自:广东
等 级:新手上路
帖 子:126
专家分:7
注 册:2016-7-18
收藏
得分:0 
回复 5楼 rjsp
嗯……我是不懂在那串数字后面加一个f是什么用意

暨南大学市场营销……
但是我有一颗计算机专业的心……
2016-08-10 13:24
快速回复:关于某个圆括号里面的float的问题~
数据加载中...
 
   



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

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