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

Đề tài: %i và %d khác nhau như thế nào???

  1. #1
    Ngày gia nhập
    03 2011
    Bài viết
    54

    Mặc định %i và %d khác nhau như thế nào???

    khi nhập số nguyên từ bàn phím người ta thường dùng %d nhưng thỉnh thoảng có bài người ta lại dùng %i, em không hiểu 2 cái này khác nhau chỗ nào??? ai biết chỉ em với, thank nhìu

  2. #2
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Hình như 2 cái này giống nhau mà ta...trong giáo trình nó nói cả 2 sài như nhau @@
    Thực hư thì tớ chưa rõ lắm
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

  3. #3
    Ngày gia nhập
    08 2011
    Bài viết
    98

    trong printf thì giống,scanf thì khác 1 tí.Trong scan thì %d nhận vào 1 số thập phân,còn %i nếu viết là 0xabc gì đấy thì nó nhận vào 1 số hex.
    Nghe Metal và dịch thơ
    lttqstudy.wordpress.com

  4. #4
    Ngày gia nhập
    03 2011
    Bài viết
    54

    Trích dẫn Nguyên bản được gửi bởi lttq Xem bài viết
    trong printf thì giống,scanf thì khác 1 tí.Trong scan thì %d nhận vào 1 số thập phân,còn %i nếu viết là 0xabc gì đấy thì nó nhận vào 1 số hex.
    bạn có thể nói chi tiết hơn ko, %d là số nguyên mà bạn??? sao lúc dùng scanf thì %d lại nhận số thập phân????

  5. #5
    Ngày gia nhập
    03 2010
    Nơi ở
    My Home
    Bài viết
    772

  6. #6
    Ngày gia nhập
    08 2011
    Bài viết
    98

    Mặc định %i và %d khác nhau như thế nào???

    Trích dẫn Nguyên bản được gửi bởi vungtroicuabo Xem bài viết
    bạn có thể nói chi tiết hơn ko, %d là số nguyên mà bạn??? sao lúc dùng scanf thì %d lại nhận số thập phân????
    %i và %d đều là format dạng số nguyên 32bit cả.Với printf thì khi đưa 2 format này vào thì không có sự khác biệt.Nhưng với scanf thì có chút khác biệt.Khi bạn nhập 1 số nguyên vào thì không vấn đề gì,nhưng nếu bạn nhập 1 số hexa vào thì %i vẫn nhận.

    ví dụ :

    int i=0;
    scanf("%i",&i);
    printf("%d",i);

    khi nhập vào 0x12
    thì kết quả là 18
    khi nhập vào 12
    thì kết quả là 12

    còn nếu scanf("%d",&i);

    nếu nhập vào 0x12
    thì kết quả là 0
    nếu nhập 12
    thì kết quả là 12

    Còn cụ thể hơn là vì sao thì nó hơi phức tạp.khi xuất nhập trên C thì nó import vào thư viện chứa hàm để call hàm bằng cách

    CALL DWORD PTR địa chỉ của hàm printf hoặc scanf .... rồi dựa vào format đưa vào để thực hiện việc gán giá trị cho i.Nói chung là khá loằng ngoằng phức tạp.Bạn hiểu thế là dc rồi
    Đã được chỉnh sửa lần cuối bởi lttq : 03-10-2011 lúc 01:58 PM.
    Nghe Metal và dịch thơ
    lttqstudy.wordpress.com

  7. #7
    Ngày gia nhập
    03 2011
    Bài viết
    54

    ra vậy, thank bạn nhé ^^

  8. #8
    Ngày gia nhập
    02 2014
    Bài viết
    3

    Bổ xung thêm một link tham khảo so với bạn namdq2k
    http://www.cplusplus.com/reference/cstdio/printf/
    http://www.cplusplus.com/reference/cstdio/scanf/

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

  1. Lập trình C Sự khác nhau giữa For và While như thế nào?
    Gửi bởi LeoChip trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 03-10-2012, 01:21 AM
  2. SƠ ĐỒ DỮ LIỆU, SƠ ĐỒ LUỒNG DỮ LIỆU giống và khác nhau thế nào?
    Gửi bởi nguyenvanbaoanh trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 1
    Bài viết cuối: 22-07-2011, 02:51 PM
  3. Lập trình C Sự khác nhau giữa *a[10] với (*a)[10] như thế nào?
    Gửi bởi muramasa trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 19
    Bài viết cuối: 06-06-2011, 06:04 PM
  4. Mỗi con trỏ trỏ đếm một mảng khác nhau như thế nào?
    Gửi bởi mrtyoffline trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 03-12-2010, 04:18 PM
  5. Lập trình C++0x int* i và (int*)i khác nhau như thế nào?
    Gửi bởi linh_060 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: 19-08-2010, 10:49 AM

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