Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: Tìm giá trị biến i, j sau biểu thức điều kiện

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Unhappy Tìm giá trị biến i, j sau biểu thức điều kiện

    PHP Code:
    #include <stdio.h>
    #include <conio.h>

    int main(){
    int a=5,b=6,y;
    //y=a&&(a>b++)&&--b;
    printf("y=%d   b=%d",y,b);
    getch();
    return 
    0;

    Bạn khoan hãy chạy chương trình, hãy chạy bằng tay xem kết quả thế nào. Rồi cho mình biết giá trị của y và b được xuất ra.

    y=? b=?

    Chương trình chạy ra kết quả là: y=0 và b= 7

    Cái phần y thì mình làm đúng, còn b thì mình làm sai.
    Kêt quả mình chạy tay là:
    y=0 và b= 6
    Vì sau đoạn y=a&&(a>b++) thì b=7. Tiếp đó là &&--b; nên nó && với b rồi giảm kết quả của b. Cuối cùng b bằng 6.


    Mình không hiểu sao chương trình lại ra được kết quả như vậy. Nhờ các bạn giải thích.

    Cám ơn nhiều!
    Đã được chỉnh sửa lần cuối bởi langman : 08-05-2009 lúc 09:01 PM. Lý do: học hỏi thì phải nghiêm túc, lần sau vớ vẩn kiểu này del bài luôn....
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  2. #2
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Bày đặt che che, viết chữ trắng làm gì cho mệt vậy, giấu nghề hay làm gì, sao chữ ký viết hay thế mà.
    Vì sau đoạn y=a&&(a>b++) thì b=7. Tiếp đó là &&--b; nên nó && với b rồi giảm kết quả của b. Cuối cùng b bằng 6.
    Cái đoạn này là trật lất rồi, nghe cách giải thích là biết bạn ko hiểu sự khác biệt giữ a++ và ++a rồi.
    Bạn chạy trên IDE nào để ra kết quả 0, 7?
    y=a&&(a>b++)&&--b;
    Tôi ko hiểu bạn dùng dấu && ở đây với mục đích gì khi a, b và y đều là những biến có kiểu int. Tôi ko nói đến việc làm được hay ko làm được mà tôi chỉ hỏi về ngữ nghĩa, biểu thức có kiểu bool nhưng lại gán về 1 biến có kiểu int, ngữ nghĩa có gì mâu thuẫn ko?
    Đã được chỉnh sửa lần cuối bởi huynguyen : 06-05-2009 lúc 08:17 AM.

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Thanks! Dùng DevC++ bạn ạ!
    Lúc trước bạn có ý nói rằng trình biên dịch không quan trọng mà. Mình dùng DevC++ và cả cụ Turbo C++ 3.0 sản xuất năm 1992 đều cho kết quả như vậy đấy!
    Câu này là do bạn nguoingu hỏi mình, mình thấy lạ nên post bài hỏi. Do nguoingu post lên hỏi hoài bị mod xóa bài, nên nhờ mình. Mình bí, mình hỏi các bạn. Tớ là vậy đấy, biết thì trả lời, không biết thì hỏi thôi. Hehe!!!
    Nguyên văn nguoingu hỏi mình!

    PHP Code:
    cho đoạn chương trình sau:
    int a=5,b=6,y;
    y=a&&(a>b++)&&--b;
    giá trị của b,y là:
    a)b=5,y=0
    b
    )b=6,y=1
    c
    )b=7,y=0
    d
    cả 3 câu trên đều sai
    thank you 
    Trích dẫn Nguyên bản được gửi bởi huynguyen Xem bài viết
    Cái đoạn này là trật lất rồi, nghe cách giải thích là biết bạn ko hiểu sự khác biệt giữ a++ và ++a rồi.
    Tớ hiểu thế này đúng không (sách vở đều nói thế này thì phải):
    a++: làm gì đó rồi mới tăng a.
    ++a: Tăng a rồi làm gì đó.

    Áp dụng vào ví dụ luôn:
    int a=5,b=6,y;
    y=a&&(a>b++)&&--b;
    5&&(5>6==>0) kết quả là 0. Sau đó tăng b lên 1 đơn vị=>b=7;

    &&--b;=>Đoạn này có hay không thì nó vẫn ra b=7;
    Đã được chỉnh sửa lần cuối bởi Loveanygirls : 06-05-2009 lúc 09:34 AM.
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  4. #4
    Ngày gia nhập
    04 2007
    Bài viết
    134

    Với biểu thức X && Y
    Nếu X = false thì kết quả của biểu thức này là false, ko xét đến Y nữa.
    Vì thế phần --b ko dc chạy.

  5. #5
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Ừ nhỉ! Câu trả lời của bạn rất hay! Cám ơn bạn!
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  6. #6
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Mặc định Tìm giá trị biến i, j sau biểu thức điều kiện

    Thêm một bài nữa mà mình không biết kết quả khi chạy tay (hay đúng hơn là không biết chạy như thế nào), đương nhiên đem vào cho trình biên dịch chạy thì ra rồi.
    Mình muốn các bạn giải thích về cách chương trình chạy đoạn code sau (bằng tay) nhé.
    PHP Code:
    int x=11,y=5,b;
    b=(x-y)?(x&&y):(x||y); 
    Kết thúc đoạn lệnh trên b=? hay thế nào?
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  7. #7
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Code:
    (x-y)?(x&&y):(x||y);
    _x - y có khác 0 ko ,
    __nếu có thì trả về ( [x có khác 0 ko] VÀ [y có khác 0 ko] ),
    __nếu ko thì trả về ( [x có khác 0 ko] HOẶC [y có khác 0 ko] )

    => b = 1
    code ra gió bão

  8. #8
    Ngày gia nhập
    02 2008
    Nơi ở
    AYS 107
    Bài viết
    41

    Một bài nữa tương tự nè. Làm mấy cái này đôi khi cũng vui vui nhỉ??

    Cho biết giá trị của a,b sau khi thực hiện đoạn chương trình sau. Giải thích
    C Code:
    1. int x=5, y=6, a, b;
    2. if (x!=y) a=x;
    3. else a=y;
    4. if (y=!x) b=x;
    5. b=y;
    I don't wanna waste another day

  9. #9
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi Loveanygirls Xem bài viết
    PHP Code:
    #include <stdio.h>
    #include <conio.h>

    int main(){
    int a=5,b=6,y;
    //y=a&&(a>b++)&&--b;
    printf("y=%d   b=%d",y,b);
    getch();
    return 
    0;

    Bạn khoan hãy chạy chương trình, hãy chạy bằng tay xem kết quả thế nào. Rồi cho mình biết giá trị của y và b được xuất ra.

    y=? b=?

    Chương trình chạy ra kết quả là: y=0 và b= 7

    Cái phần y thì mình làm đúng, còn b thì mình làm sai.
    Kêt quả mình chạy tay là:
    y=0 và b= 6
    Vì sau đoạn y=a&&(a>b++) thì b=7. Tiếp đó là &&--b; nên nó && với b rồi giảm kết quả của b. Cuối cùng b bằng 6.


    Mình không hiểu sao chương trình lại ra được kết quả như vậy. Nhờ các bạn giải thích.

    Cám ơn nhiều!
    là do 1 quy tắc đơn giản và dễ hiểu là :

    trong phép nhân logic liên tiếp thì chỉ cần 1 thằng ==0 thì có nghĩa là biểu thức đó bằng 0.
    phát hiện ra 1 thằng ==0 rồi thì tính tiếp làm gì ????

    P/S : nếu muốn hỏi thì hỏi tử tế, nếu muốn đố thì cứ nói là đố, đừng có mà lấp lửng kiểu này ........

    học là phải nghiêm túc
    Đã được chỉnh sửa lần cuối bởi langman : 08-05-2009 lúc 09:12 PM.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  10. #10
    Ngày gia nhập
    11 2008
    Bài viết
    203

    PHP Code:
    if (y=!xb=x
    Love chỉ thấy mẹo mỗi chỗ này thôi, đây là một phép gán chứ không phải phép so sánh. Nếu ai nhìn nhầm sẽ tưởng (y=!x) tương đương với (y!=x)===>Sai.
    a=5;
    b=0;//Máy chạy đấy!

    @langman:
    Mình không hiểu sao chương trình lại ra được kết quả như vậy. Nhờ các bạn giải thích.
    Câu ngày nghĩa là mình hỏi chứ không phải đố. Nhưng mình muốn tạo hứng thú cho các bạn nên phần đầu mình viết như một câu đố.
    Thanks!
    Đã được chỉnh sửa lần cuối bởi Loveanygirls : 08-05-2009 lúc 09:16 PM.
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

Các đề tài tương tự

  1. Lỗi chương trình không nhận biến(không return được biến từ public sang main)
    Gửi bởi nang trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 4
    Bài viết cuối: 02-10-2011, 06:04 PM
  2. Thuộc tính khóa ngoài( tham chiếu) biến mất khi biến đổi từ file XML sang DataTable
    Gửi bởi itmanhieu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 17-08-2011, 08:02 PM
  3. làm sao để 2 biến Datetime trừ nhau ra biến float or double?
    Gửi bởi robocon1183 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 10-12-2009, 05:11 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn