C 中多字符字符常量错误 - 但变量中只有一个字符

问题描述 投票:0回答:1

我正在学习在线 C 教程,并且有人给了我一个示例。 示例代码创建一个变量如下:

char currency = '$';

我输入的代码如下:

#include <stdio.h>

int main() {
    int items = 50;
    float cost_per_item = 9.99;
    float total_cost = items * cost_per_item;
    char currency = '$';

    // Output
    printf("Number of items: %d\n", items);
    printf("Cost per item: %c%.2f\n", currency, cost_per_item);
    printf("Total cost = %c%.2f\n", currency, total_cost);
}

此代码编译并运行。 但如果我按如下方式更改货币声明:

char currency = '£';

它不起作用,我收到以下错误:

warning: multi-character character constant [-Wmultichar] char currency = '£';

代码输出如下:

Number of items: 50
Cost per item: ú9.99
Total cost = ú499.50

知道这里出了什么问题吗? 如何在代码中使用“£”符号?

c
1个回答
1
投票

问题是您已经获得了 £ 的 UTF-8 编码(需要 2 个字节),但您分配给的变量是单个字符。 一种简单的解决方法是使用

char currency[] = "£";
作为声明,并将
%c
转换规范替换为
%s

#include <stdio.h>

int main(void)
{
    int items = 50;
    float cost_per_item = 9.99;
    float total_cost = items * cost_per_item;
    char currency[] = "£";

    // Output
    printf("Number of items: %d\n", items);
    printf("Cost per item: %s%.2f\n", currency, cost_per_item);
    printf("Total cost = %s%.2f\n", currency, total_cost);
    return 0;
}

在运行 macOS Sonoma 14.7.1 的 MacBook Pro (M3) 上运行时,它会生成:

Number of items: 50
Cost per item: £9.99
Total cost = £499.50
© www.soinside.com 2019 - 2024. All rights reserved.