union Data {
int i;
char s[20];
} data;
int main(){
printf( "%lu\n", sizeof( data ) );
for( int i = 0; i < 20; ++i ) {
data.s[i] = 0;
}
data.i = 0;
strcpy( data.s, "Hello World!");
if( data.i ) {
strcpy( data.s, "Farewell!");
}
printf( "%s\n", data.s );
Run Code Online (Sandbox Code Playgroud)
为什么它以"告别"回应?我希望if( data.i )评估为False,但不知何故,它被评估为True.