none
为啥wspintf歧视数字? RRS feed

  • 问题

  • // wsprintf.cpp : Defines the entry point for the application.
    //

    #include "stdafx.h"
    #include "stdio.h"

    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
      // TODO: Place code here.
        TCHAR       szBufferx [100] ;
     long length;

        //length=wsprintf (szBufferx, TEXT ("%5d"),123456789);//这句输出是对的
        length=wsprintf (szBufferx, TEXT ("%5d"),13023289560);
        //为什么上面这句输出来的值不对呢?
        MessageBox (NULL, szBufferx, "szCaption", 0|1) ;
     return 0;
    }

     

     


    maiyude
    2011年6月14日 8:05

答案

  • length=wsprintf (szBufferx, TEXT ("%5d"),13023289560);
    --》
    length=wsprintf (szBufferx, TEXT ("%I64d"),13023289560);

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 maiyude 2011年6月15日 4:18
    2011年6月15日 0:21
    版主

全部回复

  • 不是歧视。而是由于13023289560越界了。大于int的最大值。
    麻烦把正确答案设为解答。
    2011年6月14日 8:37
    版主
  • Type Name

    Bytes

     

    Range of Values

    int

    4

     

    –2,147,483,648 to 2,147,483,647

    2011年6月14日 16:30
  • length=wsprintf (szBufferx, TEXT ("%5d"),13023289560);
    --》
    length=wsprintf (szBufferx, TEXT ("%I64d"),13023289560);

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 maiyude 2011年6月15日 4:18
    2011年6月15日 0:21
    版主
  • 对于大数(超过变量存储范围)最好直接用字符串显示
    2011年6月15日 0:22
  • 谢谢各位大大,,,,,,
    红尘多可笑,痴情最无聊,目空一切也好
    2011年6月15日 4:18