對於下面的程序int用垃圾值打印,但預期是初始化值50,在輸出中是否有任何特定的原因導致該值?爲什麼在聯合整數的垃圾值?
#include <stdio.h>
#include <string.h>
union data
{
int a;
float c;
char b[10];
};
int main()
{
union data x;
x.a = 50;
strcpy(x.b,"hello");
x.c = 21.50;
printf ("x.a:= %d\n",x.a);
printf ("x.b:= %s\n",x.b);
printf ("x.c:= %f\n",x.c);
return 0;
}
輸出:
x.a:= 1101791232
x.b:=
x.c:= 21.500000
更新:對於下面的一切,提到類似的計劃做工精細,我沒有線索如何能產生預期的效果
#include <stdio.h>
#include <string.h>
union Data
{
int i;
float f;
char str[20];
};
int main()
{
union Data data;
data.i = 10;
printf("data.i : %d\n", data.i);
data.f = 220.5;
printf("data.f : %f\n", data.f);
strcpy(data.str, "C Programming");
printf("data.str : %s\n", data.str);
return 0;
}
輸出:
data.i : 10
data.f : 220.500000
data.str : C Programming
您可以在聯盟中只存儲一個值。 – ligoore
而不是'union',你的意思是使用'struct'嗎? –
@ligoore你可以在問題中輸入你對第二個程序的評論嗎? – Emman