你能把特殊字符放在table中吗?
Can you put special characters in a table?
使用语言:C语言
IDE : Visual Studio 代码
OS : Linux Ubuntu 20.04
代码水平:我从九月份开始在大学学习计算机科学。
您好,我目前正在开发一款带有骰子系统的游戏,叠加层是控制台。我从这里用特殊字符抽骰子:https://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Caract%C3%A8res_sp%C3%A9ciaux/Bordures(抱歉,这是法文版)。
但有时,我需要改变它们的外观。所以我创建了一个table(其实是多个,但是到处都是一样的问题),而这个table是由字符组成的。为了定义里面的内容,我放置了一个 if/else 模块,在 table.
的情况下,我只影响 ┃ 或 ┳ 等字符
问题:当我编译代码时,我有一个警告 (-Wall) 说:
warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘14849195’ to ‘-85’ [-Woverflow]
长话短说,我只想能够影响我 table 中的这些角色(我尝试使用普通角色,效果非常好)。
typedef int t_dice[5][2];
typedef char t_diceExtremite[5];
typedef char t_diceMiddle [5][2];
t_dice dice;
t_diceExtremite styleDiceTop,styleDiceBottom;
t_diceMiddle styleDiceMiddle;
for(i=0 ; i<5 ; i++){
if(dice[i][1]==1){
styleDiceTop[i] = '┳';
styleDiceMiddle[i][0] = '┣';
styleDiceMiddle[i][1] = '┫';
styleDiceBottom[i] = '┻';
}else{
styleDiceTop[i] = '━';
styleDiceMiddle[i][0] = '┃';
styleDiceMiddle[i][1] = '┃';
styleDiceBottom[i] = '━';
}
}
注意:我已经写了 'int i;',并且我之前用值填充了 dice[][]。
警告消息示例(每行都相同):
/home/myname/code/SAE_1.01/yams.c:82:37: warning: multi-character character constant [-Wmultichar]
82 | styleDiceMiddle[i][0] = '┣';
|
/home/myname/code/SAE_1.01/yams.c:81:31: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘842347315’ to ‘51’ [-Woverflow]
使用宽字符。
即
typedef char t_diceExtremite[5]; -> typedef w_chart t_diceExtremite[5];
和
styleDiceMiddle[i][0] = '┣'; -> styleDiceMiddle[i][0] = L'┣';
使用语言:C语言
IDE : Visual Studio 代码
OS : Linux Ubuntu 20.04
代码水平:我从九月份开始在大学学习计算机科学。
您好,我目前正在开发一款带有骰子系统的游戏,叠加层是控制台。我从这里用特殊字符抽骰子:https://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Caract%C3%A8res_sp%C3%A9ciaux/Bordures(抱歉,这是法文版)。
但有时,我需要改变它们的外观。所以我创建了一个table(其实是多个,但是到处都是一样的问题),而这个table是由字符组成的。为了定义里面的内容,我放置了一个 if/else 模块,在 table.
的情况下,我只影响 ┃ 或 ┳ 等字符问题:当我编译代码时,我有一个警告 (-Wall) 说:
warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘14849195’ to ‘-85’ [-Woverflow]
长话短说,我只想能够影响我 table 中的这些角色(我尝试使用普通角色,效果非常好)。
typedef int t_dice[5][2];
typedef char t_diceExtremite[5];
typedef char t_diceMiddle [5][2];
t_dice dice;
t_diceExtremite styleDiceTop,styleDiceBottom;
t_diceMiddle styleDiceMiddle;
for(i=0 ; i<5 ; i++){
if(dice[i][1]==1){
styleDiceTop[i] = '┳';
styleDiceMiddle[i][0] = '┣';
styleDiceMiddle[i][1] = '┫';
styleDiceBottom[i] = '┻';
}else{
styleDiceTop[i] = '━';
styleDiceMiddle[i][0] = '┃';
styleDiceMiddle[i][1] = '┃';
styleDiceBottom[i] = '━';
}
}
注意:我已经写了 'int i;',并且我之前用值填充了 dice[][]。
警告消息示例(每行都相同):
/home/myname/code/SAE_1.01/yams.c:82:37: warning: multi-character character constant [-Wmultichar]
82 | styleDiceMiddle[i][0] = '┣';
|
/home/myname/code/SAE_1.01/yams.c:81:31: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘842347315’ to ‘51’ [-Woverflow]
使用宽字符。
即
typedef char t_diceExtremite[5]; -> typedef w_chart t_diceExtremite[5];
和
styleDiceMiddle[i][0] = '┣'; -> styleDiceMiddle[i][0] = L'┣';