Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1

    Giúp em với, thắc mắc mấy ngày nay chưa giải được.

    Em có học c++ trên mạng và có đoạn code sau



    #include <iostream>
    using namespace std;
    int main()
    {
    cout << boolalpha; // Outputs boolean values
    // as true or false
    bool res = false;
    int a, b, c;

    a = b = c = 0;
    res = ++a || ++b && ++c;
    cout << '
    '
    << " res = " << res
    << ", a = " << a
    << ", b = " << b
    << ", c = " << c << endl;

    a = b = c = 0;
    res = ++a && ++b || ++c;
    cout << " res = " << res
    << ", a = " << a
    << ", b = " << b
    << ", c = " << c << endl;
    return 0;
    }



    Output:
    res = true, a = 1, b = 0, c = 0
    res = true, a = 1, b = 1, c = 0

    Bác nào giải thích dùm em tại sao output của đoạn code trên cái thứ nhất là a = 1, b = 0, c = 0 ; còn cái thứ 2 lại là a = 1, b = 1, c = 0 [IMG]images/smilies/Cry.gif[/IMG]
    Sao không phải a=1, b=1, c=0 [IMG]images/smilies/thinking.gif[/IMG]
    P/s Tiện thể chỉ em cách đăng bài với, em là thành viên mới nên chưa biết gì hết.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Toán tử && được nhóm ưu tiên hơn toán tử ||. Cả 2 cùng được tính từ trái qua phải.

    (VT = vế trái, VP = vế phải)
    VT || VP thì nếu VT == true (hoặc VT khác 0) thì toán tử || sẽ ko xét tiếp VP. Còn VT == false (VT == 0) thì nó mới xét tiếp VP.
    VT && VP thì nếu VT == false (hoặc VT == 0) thì toán tử && sẽ ko xét tiếp VP. VT == true (hoặc VT khác 0) thì nó mới xét tiếp VP.

    với: ++a || ++b && ++c
    hiểu là ++a || (++b && ++c) vì ưu tiên nhóm && hơn nhóm ||
    VT của toán tử || là ++a trả về 1, 1 khác 0, vậy ở đây || sẽ ko xét tiếp VP, toán tử && cũng ko được xét tới => b, c ko được tăng 1 đơn vị => a=1, b=0, c=0.

    với: ++a && ++b || ++c
    hiểu là (++a && ++b) || ++c vì ưu tiên nhóm && hơn nhóm ||
    VT của toán tử && là ++a trả về 1, 1 khác 0, vậy ở đây && sẽ xét tiếp VP. VP của toán tử && là ++b cũng là 1 khác 0, vậy phép toán && này trả về 1. Tiếp theo là xét tiếp toán tử ||. VT của toán tử || là kết quả của phép tóa && trước đó, có giá trị là 1. 1 khác 0 => ko xét tiếp vế phải của ||. Như vậy c ko được tăng 1 đơn vị => a=1, b=1, c=0.



    cứ nghĩ phép || là +, phép && là nhân. a || b && c tương đương với a + bc, a && b || c tương đương với ab + c.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cảm ơn anh, giờ thì em hiểu rùi !

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •