2015-10-15 13 views
5

Tôi đang cố gắng để chuyển đổi này vào một câu lệnh switchswitch tuyên bố nhân vật đa liên tục

if (codeSection == 281) 
    cout << "bigamy"; 
else if (codeSection == 321 || codeSection == 322) 
    cout << "selling illegal lottery tickets"; 
else if (codeSection == 383) 
    cout << "selling rancid butter"; 
else if (codeSection == 598) 
    cout << "wounding a bird in a public cemetery"; 
else 
    cout << "some other crime"; 

// Actual switch statement 
switch (codeSection) 
{ 
    case '281': 
     cout << "bigamy" << endl; 
     break; 

    case '321': 
    case '322': 
     cout << "selling illegal lottery tickets" << endl; 
     break; 

    case '383': 
     cout << "selling rancid butter" << endl; 
     break; 

    case '598': 
     cout << "wounding a bird in a public cemetery"; 
     break; 

    default: 
     cout << "some other crime"<< endl; 

} 

Trình biên dịch nói câu lệnh switch nhân vật đa liên tục, và mang lại cho tôi một cảnh báo màu vàng nhưng vẫn biên dịch. Câu hỏi của tôi là trường hợp được cho là chỉ ở dạng char? như trường hợp '2'

+0

Có lẽ bạn nên biết rằng cảnh báo ** trình biên dịch ** là thứ mà bạn nên thực hiện theo lời khuyên, nhưng không nhất thiết phải phá vỡ bất kỳ thứ gì. Nhiều cảnh báo có thể được tắt, trên thực tế (không phải là họ nhất thiết phải). ** Các lỗi **, mặt khác, ngăn mã của bạn biên dịch hoặc chạy một cách chính xác. – CodeMouse92

Trả lời

5
case '281': 

nên

case 281: 

và tương tự cho phần còn lại, nếu không trình biên dịch "nghĩ" mà bạn cố gắng sử dụng một đa ký tự không đổi, mà không phải là những gì bạn có thể muốn.

A case không phải là char. Trên thực tế, nó phải là biểu thức liên tục của cùng loại với loại điều kiện sau khi chuyển đổi và quảng cáo không tách rời, xem ví dụ: http://en.cppreference.com/w/cpp/language/switch.

+0

... lý do là, kèm theo một cái gì đó trong dấu ngoặc kép chỉ định nó như là một ký tự chữ, trong khi để chúng ra trong trường hợp này làm cho nó một số nguyên chữ. – CodeMouse92

+0

@ JasonMc92 Đúng, các hằng số đa ký tự afaik bằng cách nào đó không được khuyến khích, vì giá trị của chúng được xác định bằng thực thi. – vsoftco

+0

Vâng, bạn nói đúng. Tôi tìm thấy [bài viết này] (http://www.zipcon.net/~swhite/docs/computers/languages/c_multi-char_const.html) về chủ đề này. – CodeMouse92

Các vấn đề liên quan