30/09/2018, 20:36
Các toán tử trong C
Em có bài toán:
int m=3,p=5;
int a1,a2;
a1=p>m;
a2=p%m+p>m;
xuất ra màn hình thì a1=1; a2=1;
em ko hiểu tại sao a2 ko bằng 3?
ai có thể giải thích dùm em!
Bài liên quan
Tại sao bạn nghĩ a2 sẽ bằng 3?
Bạn giải thích giùm xem bạn hiểu cái đoạn trên là gì? Nói bằng lời văn xem. Mình chưa thấy có một bài toán nào trong thực tế như vậy, bạn lên bảng viết một bài toán như vậy, thầy giáo cho bạn mấy điểm? Chú ý: các bạn hiểu vấn đề đừng ném đá mình, mình đang dùng phương pháp hỏi đáp để làm cho bạn đang hỏi hiểu vấn đề.
p>m là true chuyền sang int là 1 ok
p%m=5%3=2
lấy 1+2=3 chứ sao!
nghĩ đơn giản vậy thôi
bài này trong trường chưa bao giờ thấy mới tìm làm thử ko hiểu tại sao!
C là một ngôn ngữ lập trình dạng “có kiểu” (có kiểu mạnh), tức là một biến phải có kiểu xác định, cho nên, cái a2=p%m+p>m; là tầm bậy, bạn hoặc phép “ép kiểu” hoặc phải khai báo lại kiểu của biến a2, còn không, nó ra kết quả không mong đợi thì người khác cũng khó giải thích cho bạn hiểu khi bạn không hiểu câu “C là một ngôn ngữ có kiểu” là sao.
@superthin Em có 1 cuốn bài tập nó cho bài như vậy và kêu mình cho kết quả !
nhưng ko hiểu tại sao giá trị đó lại = 1?
link bài đó nek! bài 3
dropbox.com
B%C3%A0i%20t%E1%BA%ADp%20C%20v%C3%A0%20C%2B%2B%20%28%20c%C3%B3%20l%E1%BB%9Di%20gi%E1%BA%A3i%29.pdf
Chỉ biết khuyên bạn đọc lại lý thuyết cho kỹ. Bạn chưa nắm lý thuyết. Các thứ bạn cần đọc:
Sau khi bạn nắm được 3 ý trên, bạn tự trả lời. Để không làm bạn nản lòng, mình thử phân tích tí xíu cho bạn:
Thứ tự phép tính là sao? Sẽ là: 5%3 = 2, rồi + 5 tức là 7; rồi thì 7 > 3 sẽ là true, true nếu tự động ép kiểu sang int thì là 1.
@superthin ok thank bác!vậy là mình đã ko đọc kĩ tài liệu!
bạn đọc lại kiến thức thứ tự ưu tiên của các toán tử trong C nhé, có đầy đủ đó, đọc xong bạn hiểu ngay
Dấu
+
thực hiện trước dấu>
bạn.Với lại trong C,
true
(nếu có tồn tại trong standard bạn đang dùng) luôn là1
chứ không có ép kiểu gì ở đây hết.Trong C, C++, phép % sẽ thực hiện trước, sau đó tới phép +, rồi đến phép so sánh (>) (như khi bạn làm toán vậy ,phép nhân luôn thực hiện trước phép cộng). Vậy trong phép toán của bạn, C sẽ thực hiện 5%3 trước, được kết quả là 2. Sau đó tất cả cộng cho p, nghĩa là 2 + 5 (p = 5) được kết quả là 7, sau đó so sánh 7 có phải lớn hơn 3 hay không. Vì 7 lớn hơn 3 nên cho kết quả là 1.