我正在学习在线 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
知道这里出了什么问题吗? 如何在代码中使用“£”符号?
问题是您已经获得了 £ 的 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