31488变成十六进制为7B00
123变成十六进制为007B
由此可判断你的程序采用了大端模式编译(或使用了大端模式的库函数),数据先保存高位字节再保存低位字节。
%u就是输出unsigned int的数据,你可以写:(int)123或(unsigned int)123
你的系统默认123是short int型数据(占用一个字节),调用sprintf时堆栈栈顶之上的字节又恰好是0,才会输出31488,否则还不知道要输出什么数据呢。
这种问题的最好解决方式就是不去搭理它,而不是试图解释它。
标准规定,这种错误的调用(需要一个unsigned int却传入int,仅限可变参数)是未定义的。换句话说会发生什么什么是不可预测的。
顺便恭喜LZ,这台机器估计可以抓出这方面的不少问题。
你看看是不是你强制转化的时候错了啊无符号形的都带引号的,不知道是不是这个问题
发了个函数给你,来个好评啊!
u格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。
输出一个10进制数
好评啊!亲!