2017-02-26 58 views
1

我寫的代碼是關於黑色的插口。 我無法編譯它,它會發生警告。 多字符字符常量和隱式常量轉換溢出 任何人都可以告訴我發生了什麼事情。 我已經想了很久,plz幫助我。多字符字符常量和溢出中隱式常量轉換

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

int flower; 
int k; 
int add [13]={1,2,3,4,5,6,7,8,9,10,10,10,10}; 
char flower_all [4]={'\3','\4','\5','\6'}; 
char number_all [13]={'A','2','3','4','5','6','7','8','9','10','J','Q','K'}; 
char player_f[13],player_n[13]; 
char com_f[13],com_n[13];    
int poker [52]={0};    
int i,j,y,num,ans; 
int player_p=0,com_p=0; 
void wash(){  
int k; 
k=rand()%52; 
while(poker[k]==1) 
{ 
    k=rand()%52; 
} 
poker[k]=1; 
} 
void give_card_p(){ 
char player_f[13],player_n[13]; 
int i,k; 
int ans; 
printf("請問是否要補牌? 1:要 2:不要"); 
scanf("%d",&ans); 
fflush(stdin); 
while (ans==1){ 
    wash(); 
    player_f[i]=flower_all[k/13]; 
    player_n[i]=number_all[k%13]; 
    player_p+=add[k%13]; 
    continue; 
    if (player_p>21) 
    break; 
} 
} 
int main(){ 
srand(time(0)); 
char player_f[13],player_n[13]; 
int k; 
for(i=0;i<2;i++){ 
    wash(); 
    player_f[i]=flower_all[k/13]; 
    player_n[i]=number_all[k%13]; 
    player_p+=add[k%13]; 
} 
for (i=0;i<2;i++){ 
    wash(); 
    com_f[i]=flower_all[k/13]; 
    com_n[i]=number_all[k%13]; 
    com_p+=add[k%13]; 
} 
printf("%c%c",player_f[i],player_n[i]); 
fflush(stdin); 
return 0; 
} 
+0

請考慮創建一個[mvce](http://stackoverflow.com/help/mcve)。也請包括任何錯誤信息的完整文本,並指出它失敗的行。 –

回答

4

單引號'表示'字符常量'。在以下行

char number_all [13]={'A','2','3','4','5','6','7','8','9','10','J','Q','K'}; 

'10'是一個'多字符常量'。這是'實現定義' - 也就是說,不同的編譯器可以以不同的方式解釋它。在這種情況下,如果您提供了錯誤消息,則可能是您的錯誤來源。我建議使用enumerated type來代表你的名片。

+0

文字有一個地址。字符*常量*沒有地址。 – StoryTeller

+1

你可以有多個字符,但它們的含義是實現定義的。 –

+0

@IharobAlAsimi謝謝;已編輯。 –

0

我希望你得到這兩個錯誤

HC:9:59:警告:多字符常量

HC:9:警告:溢出隱不斷轉換

它發生因爲在程序中,

炭number_all [13] = { 'A', '2', '3', '4', '5', '6', '7', '8' , '9', '10', 'J', 'Q', 'K'};

你有「10」這是一個多字符常量,編譯器無法將其轉換成一個字符。

維基百科:

個性常數是單引號,例如'A',並且有 int類型(在C++中,char)。不同的是,「A」表示兩個字符'A'和'\ 0'的空終止數組,其中'A' 直接表示字符值(如果使用ASCII,則爲65)。所述 相同反斜槓轉義支持被作爲字符串,不同之處在於(的 課程)「可以有效地被用作一個字符不被轉義, 而'現在必須轉義。

字符常量不能雖然 很少有用 - 它們讓一個存儲多個字符常量(例如,'xy')是有效的字符整數 (例如,4個ASCII字符可以適合32位整數,8個可以適用於64位 之一)。由於字符的順序是pac ked成int 未指定,便攜式多字符常量使用難度爲 。