2301_80457950 2023-11-24 18:54 采纳率: 0%
浏览 9

C语言接收不同类型并判断

变量要提前定义才能接收,那要如何才能接收不同数据类型并判断以下内容啊?

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-24 20:32
    关注

    【以下回答由 GPT 生成】

    ### C语言如何接收不同数据类型并进行判断?
    
    要实现接收不同数据类型并进行相应的判断,可以使用C语言中的联合(union)或结构体(struct)来实现。
    
    #### 方法一:使用联合(union)
    ```c
    #include <stdio.h>
    
    typedef union {
        int integer;
        float floating;
        char string[20];
    } Data;
    
    void processData(Data data) {
        // 进行数据类型的判断和处理
        // 例如
        if (data.integer != 0) {
            printf("This is an integer: %d\n", data.integer);
        } else if (data.floating != 0.0) {
            printf("This is a float: %f\n", data.floating);
        } else {
            printf("This is a string: %s\n", data.string);
        }
    }
    
    int main() {
        Data data;
        data.integer = 10;
        processData(data);
    
        data.floating = 3.14;
        processData(data);
    
        strcpy(data.string, "Hello, world!");
        processData(data);
    
        return 0;
    }
    

    方法二:使用结构体(struct)

    #include <stdio.h>
    
    typedef struct {
        int type; // 1 for integer, 2 for float, 3 for string
        union {
            int integer;
            float floating;
            char string[20];
        } data;
    } Data;
    
    void processData(Data data) {
        switch (data.type) {
            case 1:
                printf("This is an integer: %d\n", data.data.integer);
                break;
            case 2:
                printf("This is a float: %f\n", data.data.floating);
                break;
            case 3:
                printf("This is a string: %s\n", data.data.string);
                break;
            default:
                printf("Unknown data type\n");
        }
    }
    
    int main() {
        Data data1 = {1, .data.integer=10};
        processData(data1);
    
        Data data2 = {2, .data.floating=3.14f};
        processData(data2);
    
        Data data3 = {3, .data.string="Hello, world!"};
        processData(data3);
    
        return 0;
    }
    

    ```



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月24日