2013-04-04 50 views
6

Tôi có đoạn mã sau:Làm cách nào để tôi so sánh các ký tự trong C++?

#include <iostream> 
using namespace std; 
int main() 
{ 
    char fg; 
    cin>>fg; 
    char x[20]; 
    x[0]='0'; 
    if(fg=x[0]) 
    { 
     cout<<"It's true!"<<endl; 
     return true; 

    } 
    cout<<"It's false!"<<endl; 
    return false; 
} 

Không có vấn đề gì đầu vào tôi cho, true luôn được trả về. Cú pháp của tôi có bị tắt không? Bất kỳ trợ giúp sẽ được đánh giá cao.

+3

Ah, số lần tôi gặp lỗi này. Hãy thử == thay vì = trong if. Chừng nào x [0] đánh giá đúng, phép gán đơn giản sẽ là đúng. – engineerC

+1

Bạn đã cố gỡ lỗi chưa? – IamStalker

+0

@CaptainMurphy, và bằng cách đánh giá đúng bạn có nghĩa là đánh giá không 0. – Alex

Trả lời

12

Trong C++ bạn sử dụng == để so sánh. = là một bài tập. Nó có thể được sử dụng trong điều kiện của một câu lệnh if, nhưng nó sẽ đánh giá để true trừ khi nhân vật là '\0' (không '0', vì nó là trong trường hợp của bạn):

if(fg == x[0]) 
{ 
    ... 
} 
+0

Tôi thêm một giây =, nhưng bây giờ nó luôn luôn trả về false ngay cả khi tôi nhập 0. Cảm ơn tất cả mọi người cho tất cả các trợ giúp cho đến nay. –

+0

Đừng bận tâm, hãy tìm ra, cảm ơn các bạn! –

+1

@DmitriyPotemkin Stack Overflow cho phép bạn xóa các bình luận nếu chúng không còn áp dụng nữa. Trỏ đến nhận xét và nhấp vào chữ thập nhỏ bên cạnh nhận xét đó. – dasblinkenlight

1

Trong câu lệnh if sử dụng ==. Đối với Ví dụ:

if (fg == x[0]) { 
    //........... 
} 

== so sánh, nhưng = làm fg bằng x[0], và đó là lý do tại sao bạn sẽ có được đúng mọi lúc.

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