雖然從長到長分配,但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