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ố 11 kết quả

Đề tài: In ra ký tự và mã của ký tự đó?

  1. #1
    Ngày gia nhập
    03 2009
    Nơi ở
    quan binh thanh
    Bài viết
    36

    Red face In ra ký tự và mã của ký tự đó?

    int x[]={0x4161}
    char *p1,*p2;
    p1=(char*)x;
    p2=p1+1;
    printf("%c%d",*p1,*p2);
    kết quả in ra khi được chỉ thị là
    a)A 97
    b)a 65
    c)A 98
    d)a 66
    thanks các huynh nhiều

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

    sai tất :P ko có dấu cách trong output

    j/k
    Chạy trên máy ra
    b) a 65

    do p1 lấy 1 byte đầu nên nó sẽ giữ 0x61, p2 giữ byte số 2 nên giữ 0x41.
    code ra gió bão

  3. #3
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi 6220119 Xem bài viết
    sai tất :P ko có dấu cách trong output
    hay hay, chí lí quá
    None!

  4. #4
    Ngày gia nhập
    09 2008
    Bài viết
    46

    Mấy bác giải thích cho mình cái này được ko?

    C Code:
    1. int x[]={0x4161}

    thanks!

  5. #5
    Ngày gia nhập
    04 2009
    Nơi ở
    một căn hộ nhỏ trên trái đất
    Bài viết
    372

    Trích dẫn Nguyên bản được gửi bởi Red_Man Xem bài viết
    Mấy bác giải thích cho mình cái này được ko?

    C Code:
    1. int x[]={0x4161}

    thanks!
    Chỉ đơn giản là đó là cách biểu diễn kiểu int dưới dạng thập lục phân, phát biểu trên tương đương với
    C Code:
    1. int x[]={16737}

  6. #6
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Mặc định In ra ký tự và mã của ký tự đó?

    Trích dẫn Nguyên bản được gửi bởi icttrack Xem bài viết
    Chỉ đơn giản là đó là cách biểu diễn kiểu int dưới dạng thập lục phân, phát biểu trên tương đương với
    C code: Lựa chọn code | Ẩn/Hiện code
    int x[]={16737}
    nhầm thế nào ấy nhỉ
    None!

  7. #7
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà Nội
    Bài viết
    74

    Code:
    int x[]={0x4161}
    char *p1,*p2;
    p1=(char*)x;
    p2=p1+1;
    printf("%c%d",*p1,*p2);
    thế tại sao trong trường hợp p1 lại lấy byte sau
    còn trong trường hợp sau:
    Code:
    char x[]="AB";
    char *p1,*p2;
    p1=(char*)x;
    p2=p1+1;
    printf("%c%d",*p1,*p2);
    thì kết quả lại là
    A66
    tức là p1 lấy byte đầu tiên.hjxxx khó hiểu quá.hay là cách ép kiểu sẽ lấy dữ liệu theo cách đọc của dữ liệu được ép:
    VD như int thì phải đọc từ cuối lên.
    còn chuỗi thì đọc từ đầu xuống.
    ??????????

  8. #8
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    @minhgiang_hedspi:
    p1 chiếm byte đầu của x nên nó ra 'A' vì bạn để là %c
    p2 chiếm byte 2 của x nên nó ra B nhưng vì bạn để là %d nên nó ra mã ASCII của 'B'.
    Code:
    char x[]="AB";
    Cách gán này không hợp lệ nên có cảnh báo đấy nhưng chương trình vẫn chạy được.

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

    Cách gán này không hợp lệ nên có cảnh báo đấy nhưng chương trình vẫn chạy được.
    cách gán đó hợp lệ vì nó tương đương với
    C Code:
    1. char x[] = {'A','B','\0'};
    code ra gió bão

  10. #10
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà Nội
    Bài viết
    74

    tất nhiên rồi là mình biết kết quả.nhưng tại sao khi dùng vơi biến kiểu int thì byte đầu tiên lại là lấy từ dưới.còn chuỗi lại là lấy từ trên??

    http://ebook.here.vn
    trang web cung cấp đề thi,tài liệu ôn thi đại học.

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