Announcement

Collapse
No announcement yet.

Cho em hỏi chút về lệnh printf xuất ra không đúng

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Cho em hỏi chút về lệnh printf xuất ra không đúng

    Tại sao khi khai báo:
    char a = 200;
    thì thực chất a = -56 vậy ạ?
    Và nếu a = [bất kỳ] thì giá trị thực nó là bao nhiêu?
    Last edited by BiThuDoan; 04-12-2011, 20:54.

  • #2
    char a = 200;
    xem kĩ lại kiểu char nhé
    Be different and always different
    http://archlinuxvn.org/
    http://theslinux.org
    http://lab.infosec.xyz

    Comment


    • #3
      thì em printf("%d",a); nó ra -56 thật mà???

      Comment


      • #4
        char mà sao lại printf ("%d",a) mềnh hơi dở code
        Be different and always different
        http://archlinuxvn.org/
        http://theslinux.org
        http://lab.infosec.xyz

        Comment


        • #5
          thì printf thứ tự của ký tự a mà mình khai báo đó a!!

          Comment


          • #6
            Originally posted by 11520026 View Post
            Tại sao khi khai báo:
            char a = 200;
            thì thực chất a = -56 vậy ạ?
            Và nếu a = [bất kỳ] thì giá trị thực nó là bao nhiêu?
            Đọc lại phần tràn số và phần số bù (còn gọi là biểu diễn số âm trên máy tính) trong giáo trình

            Comment


            • #7
              anh nói sơ qua được ko? Em tìm trong tài liệu rồi mà hok thấy! Với lại em tiếp thu chậm nên chắc đọc tài liệu cũng ko hiểu liền đc đâu

              Comment


              • #8
                nếu là khai báo char a thì dùng scanf("%s, &a"); hoặc nếu là mảng chữ thì gets(a); nên dùng gets(a); vì chúng ta có nhập khoảng trống...
                Blog Hứa Anh Tôi trên mạng xã hội: Hứa Anh + | FaceBook | Thủ thuật Máy tính

                Comment


                • #9
                  C qui định: số kiểu char chỉ lấy 7 bits cuối làm giá trị, bit đầu sẽ được dùng làm bit dấu (0-số dương;1-số âm).

                  VD: với số 200 khi biểu diễn wa hệ nhị phân (8 bit) sẽ là 11001000.
                  nhưng trong kiểu char nó sẽ được biểu diễn theo phương pháp bù 2, tức là giữ lại bit đầu tiên làm dấu, sau đó đảo tất cả các bit còn lại (0->1;1->0) và cộng thêm 1.
                  Tức là số 200 biểu diễn theo kiểu char sẽ là: (1)0110111 + 1 = (1)0111000 = -56.
                  Last edited by 11520126; 04-12-2011, 02:29.
                  Nếu bạn không đủ giỏi, đừng cố đi ngược đám đông.

                  Comment

                  LHQC

                  Collapse
                  Working...
                  X