Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Lập trình C++ | Chương trình C++ chạy trong DOS và Window cho kết quả khác nhau?!

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

    Mặc định Lập trình C++ | Chương trình C++ chạy trong DOS và Window cho kết quả khác nhau?!

    Mình thử viết một chương trình đơn giản đổi chỗ 2 số,nhưng chạy bằng C-Free thì ra kết quả là: 200,200
    Bằng TC++ 3.0 thì ra kết quả đúng là : 200,100
    PHP Code:
        #include <iostream.h>
        #include <conio.h>
        #include <stdio.h>
        
    void main()
        {
        
    int x=100;
        
    int y=200;
        
    int *px,*py,*temp;
        
    px=&x;
        
    py=&y;
        *
    temp=*px;
        *
    px=*py;
        *
    py=*temp;
        
    cout<<x<<","<<y;
        
    getch();
        } 
    Bạn nào biết cách giải quyết không?!

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

    Trích dẫn Nguyên bản được gửi bởi aqrius Xem bài viết
    Mình thử viết một chương trình đơn giản đổi chỗ 2 số,nhưng chạy bằng C-Free thì ra kết quả là: 200,200
    Bằng TC++ 3.0 thì ra kết quả đúng là : 200,100
    PHP Code:
        #include <iostream.h>
        #include <conio.h>
        #include <stdio.h>
        
    void main()
        {
        
    int x=100;
        
    int y=200;
        
    int *px,*py,*temp// khai báo con trỏ temp, nhưng chưa khởi tạo, vùng nhớ trỏ bởi temp không xác định
        
    px=&x;
        
    py=&y;
        *
    temp=*px// lấy giá trị vùng nhớ trỏ bởi px gán vào vùng nhớ trỏ bởi temp, nhưng vùng nhớ trỏ bởi temp không xác định[/b]
        
    *px=*py;
        *
    py=*temp;
        
    cout<<x<<","<<y;
        
    getch();
        } 
    Bạn nào biết cách giải quyết không?!
    Lỗi nguy hiểm đây: Khai báo biến con trỏ nhưng dùng không đúng, viết ct rườm rà

  3. #3
    Ngày gia nhập
    05 2009
    Bài viết
    16

    Bạn chỉ cần bỏ cái dấu * trong khai báo biến temp là chắc chắn chạy đúng!! Bạn khai báo như thế nghĩa là khai báo con trỏ mà giá trị của con trỏ là địa chỉ của biến khác nên tất nhiên chương trình của bạn chạy sai rồi!!

  4. #4
    Ngày gia nhập
    05 2009
    Bài viết
    6

    hoặc bạn thêm *temp = new int; trước khi thực hiện phép hoán đổi và delete(temp) sau khi kết thúc phép hoán đổi cũng ok.

    nguyên nhân thì bạn kirimaru80 đã nói, chưa khởi tạo con trỏ.

    *px và *py là các giá trị int, nên bạn có thể sửa theo cách Stephen_Hawking21 nói cũng ok, tức là temp k là con trỏ nữa, đơn giản chỉ là 1 biến trung gian kiểu int

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

  1. Mã nguồn C Lỗi Lỗi chương trình khi chạy và debug cho 2 kết quả khác nhau?!
    Gửi bởi an7777777 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 17-11-2012, 07:26 AM
  2. Kỹ thuật C++0x Chuyển đổi giữa các màn hình window khác nhau
    Gửi bởi koutarou trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 06-05-2011, 11:27 PM
  3. Kết Quả khác nhau ở những lần chạy khác nhau
    Gửi bởi llvllrSi trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 15-12-2010, 01:26 AM
  4. Window và Dialog khác nhau chỗ nào ?
    Gửi bởi vduck trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 12
    Bài viết cuối: 20-07-2009, 02:58 PM
  5. 1 cái tutorial về WPF , kết quả chạy trên 2 máy lại khác nhau ??
    Gửi bởi HKuspc trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 05-10-2008, 01:16 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