熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

printf打印float錯誤引起的思考[1]

2013-11-13 11:01:50  來源: .NET編程 

  昨天跟一個朋友討論一個問題

    float n=

    double n=

    long n=

    long n=

    printf(%ld %ld %ld %ld\n n n n n

  在x 位機上執行輸出結果是 按照我的理解float和long在位機下都占個字節即使無法格式化為long進行輸出後面的值也不至於都出問題

  實際裡面涉及以下的知識

   把上面的代碼反匯編可以看到

    mov xb%eax

    mov %eaxx(%esp)

    mov xb%eax

    mov %eaxx(%esp)

    fldl xa fstpl xc(%esp)

    flds xa fstpl x(%esp)

    movl $x(%esp)

    call xc <printf>

  我先後把這幾個變量定義成了局部和全局的進行了測試這段是用全局的匯編碼

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/15021.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.