Trang 1 trên tổng số 4 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 37 kết quả

Đề tài: Không như mong muốn khi sử dụng toán tử sizeof lấy chiều dài chuỗi [quizz]

  1. #1
    Ngày gia nhập
    02 2011
    Nơi ở
    Hà Nội
    Bài viết
    67

    Mặc định Không như mong muốn khi sử dụng toán tử sizeof lấy chiều dài chuỗi [quizz]

    Xin lỗi các mod trước vì mình không biết đặt tên thế nào cho phù hợp vì đây chỉ là một quizz vui thôi
    Đề bài là: chương trình sau được viết với mong muốn in ra xâu str "I am from C Viet". Vậy out put của nó như thế nào? Giải thích tại sao lại như thế.

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. #define SIZE (sizeof(str)/sizeof(str[0]))
    5.  
    6. char str[]="I am from C Viet";
    7.  
    8. int main(){
    9.     int i;
    10.    
    11.     for(i=-1; i<SIZE-1; i++){
    12.         printf("%c", str[i+1]);
    13.     }
    14.    
    15.     getch();
    16.     return 0;
    17. }

    p/s: quizz vui, mức độ basic nên mọi người tham gia không xì-bam, không ném đá have fun
    Vấn đề không phải là bước nhanh, mà là luôn luôn bước

  2. #2
    Ngày gia nhập
    09 2010
    Bài viết
    207

    Câu hỏi khá hay. Bây giờ mới biết.
    C++ Code:
    1. sizeof() sẽ return một unsigned int
    2. => ..... (-1 is maximum number) :D
    C++ Code:
    1. while ( ! Love(I, You) )
    2.     try { Send(I, You, ..... ); .....; } catch (LoveException lvex) { fix_error(); }
    3. Marry ( I, You );
    4. while ( true )
    5.     try { ....together; } catch (Exception ex) { remove_bad_things(); }

  3. #3
    Ngày gia nhập
    02 2011
    Nơi ở
    Hà Nội
    Bài viết
    67

    Trích dẫn Nguyên bản được gửi bởi kenzso Xem bài viết
    Câu hỏi khá hay. Bây giờ mới biết.
    C++ Code:
    1. sizeof() sẽ return một unsigned int
    2. => ..... (-1 is maximum number) :D
    Chính xác đó bạn.
    sizeof nó trả về một số unsigned int, khi so sánh i (một số int) với SIZE (một số unsigned int) thì i được tự động convert thành unsigned int. Do đó điều kiện false -> câu lệnh trong vòng for không được thực hiện. khi compile thì compiler nó có issue ra warning về cái này.

    p/s: câu hỏi có vẻ dễ hay sao mà không thấy mọi người tham gia gì cả. Lần sau sẽ post câu nào nó xương xương một tý
    Mà mod nào để chỉnh lại cái tit thế? thế thì lộ hết vấn đề rồi còn gì
    Vấn đề không phải là bước nhanh, mà là luôn luôn bước

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

    ko chỉnh thì nó được tiễn về thùng rác rồi
    tại langman thấy bài viết hay có ý nghĩa nên thay đổi để giữ lại đấy
    more : đã map bài viết vào bản đồ box
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  5. #5
    Ngày gia nhập
    02 2011
    Nơi ở
    Hà Nội
    Bài viết
    67

    Trích dẫn Nguyên bản được gửi bởi langman Xem bài viết
    ko chỉnh thì nó được tiễn về thùng rác rồi
    tại langman thấy bài viết hay có ý nghĩa nên thay đổi để giữ lại đấy
    more : đã map bài viết vào bản đồ box
    Hì hì, thank anh. Tại em không biết đặt tên nó như thế nào cho nó hợp lý. Hay có khi nên mở một khu vực riêng để post quizz, như vậy sẽ "lách luật" được cái khoản đặt tên
    Vấn đề không phải là bước nhanh, mà là luôn luôn bước

  6. #6
    Ngày gia nhập
    12 2009
    Nơi ở
    bế quan tu lại
    Bài viết
    846

    Mặc định Không như mong muốn khi sử dụng toán tử sizeof lấy chiều dài chuỗi [quizz]

    cám ơn first_place, giờ mình mới biết điều này
    mà nếu vào khu vực riêng đó thì mem biết đó là khu vực quizz rùi
    Đã được chỉnh sửa lần cuối bởi aydada : 21-03-2011 lúc 08:07 PM.

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

    Trích dẫn Nguyên bản được gửi bởi first_pace Xem bài viết
    Hì hì, thank anh. Tại em không biết đặt tên nó như thế nào cho nó hợp lý. Hay có khi nên mở một khu vực riêng để post quizz, như vậy sẽ "lách luật" được cái khoản đặt tên
    đây có 2 khu vực nè, em có thể phát triển tiếp
    http://forums.congdongcviet.com/showthread.php?t=9664
    http://forums.congdongcviet.com/showthread.php?p=117404
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  8. #8
    Ngày gia nhập
    10 2009
    Nơi ở
    Close All
    Bài viết
    993

    Cái này trong sách tin học đại cương có ghi mà ,khi học về ép kiểu đó.Kiểu nào có vùng biểu diễn lớn hơn thì các toán hạng sẽ đc ép về kiểu đó .
    Ở đây unsigned int có vùng biểu diễn lớn hơn int.

  9. #9
    Ngày gia nhập
    09 2010
    Bài viết
    207

    Trích dẫn Nguyên bản được gửi bởi tauit_dnmd Xem bài viết
    Cái này trong sách tin học đại cương có ghi mà ,khi học về ép kiểu đó.Kiểu nào có vùng biểu diễn lớn hơn thì các toán hạng sẽ đc ép về kiểu đó .
    Ở đây unsigned int có vùng biểu diễn lớn hơn int.
    int và unsigned int đều có số lượng phần tử giống nhau (2^32 phần tử). nhưng int thì range từ -(2^31) -> 2^31-1 còn unsigned int thì range từ 0 -> 2^32-1
    C++ Code:
    1. while ( ! Love(I, You) )
    2.     try { Send(I, You, ..... ); .....; } catch (LoveException lvex) { fix_error(); }
    3. Marry ( I, You );
    4. while ( true )
    5.     try { ....together; } catch (Exception ex) { remove_bad_things(); }

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

    @all : vậy xin đố tiếp 1 câu tới every body như sau :
    tìm 1 way ngắn nhất, nhanh nhất (fix nhanh nhất chứ o phải chi phí run-time) để được 1 kết quả như chủ topic mong muốn
    yêu cầu
    + kết quả đúng 7 điểm
    + chứng minh nó là ngắn nhất, nhanh nhất 1 cách logic 3 điểm

    (nếu chứng minh được phản chứng, phủ định lại yêu cầu cũng được 10 điểm)
    (lý luận ko logic vị trừ 1 điểm)
    More : câu đố có dành cho cả chủ topic
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

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

  1. Get Tọa Độ Chuột Không như mong muốn !
    Gửi bởi muoitieu trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 24-07-2012, 04:07 PM
  2. Lập trình C++ với mảng 2 chiều, mong các bạn sửa lỗi giúp?
    Gửi bởi teodainhan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-05-2009, 07:52 PM
  3. Sắp xếp mảng hai chiều, mong các bạn gợi ý?
    Gửi bởi thanhtung0601 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 07-04-2009, 09:36 PM
  4. [ Solved ]Tại sao sizeof(int)=sizeof(long) ?
    Gửi bởi vampirehl trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 19-11-2008, 02:03 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