Tag: 型打孔

便携式数据重新解释

我想以便携方式(C99)将一种类型的数据重新解释为另一种类型。 我不是在谈论铸造,我想重新解释一些给定的数据。 此外,通过便携式我的意思是它不会破坏C99规则 – 我并不是说重新解释的值在所有系统上都是相同的。 我知道3种不同的重新解释数据的方法,但其中只有两种是可移植的: 这不是便携式的 – 它打破了严格的别名规则。 /* #1 Type Punning */ float float_value = 3.14; int *int_pointer = (int *)&float_value; int int_value = *int_pointer; 这是依赖于平台的,因为它在将float写入其中之后从union中读取int值。 但它不会破坏任何C99规则,因此应该工作(如果sizeof(int) == sizeof(float) )。 /* #2 Union Punning */ union data { float float_value; int int_value; }; union data data_value; data_value.float_value = 3.14; int int_value = data_value.int_value; […]