虽然从长到长分配,但LSB 2字节为0,其中MSB填充了来自堆栈的func1()算法值中的值。为什么会发生这种情况,为什么编译器试图将这些垃圾值添加到MSB 2字节?无符号短符合无符号长赋值
#include <stdio.h>
unsigned short func1(void); // NB: function prototype !
int main(void)
{
unsigned long int L = 0;
unsigned short K = 0;
L = func1();
printf("%lu", L); // prints junk values
K = L;
printf("%u", K); // prints 0
return 0;
}
unsigned short func1(void)
{
unsigned short i = 0;
// Algorithm Logic!!!
return i; // returns 0
}
你错过了一些返回类型和原型。 func1()返回int,不短。 – 2010-03-04 14:38:08
您已复制并粘贴我提供的固定代码,但您尚未说明此问题是否解决了感知问题? – 2010-03-04 15:06:01