4つの要素のchar配列をfloat数値として出力しようとしています。コンパイラ(gcc)では、main()関数に書き込むことができませんz.s={'3','4','j','k'};
。なぜですか?
#include <stdio.h>
union n{
char s[4];
float x;
};
typedef union n N;
int main(void)
{
N z;
z.s[0]='3';
z.s[1]='4';
z.s[2]='j';
z.s[3]='k';
printf("f=%f\n",z.x);
return 0;
}
上記のプログラムの出力は次のとおりです。f=283135145630880207619489792.000000
、float変数が格納できるよりもはるかに大きい数値。出力は、科学的記数法で、である必要があります4.1977085E-8
。では、何が問題なのですか?