关于指令和数据是相同的,只是解释不同这回事


相同指的是在内存中都是二进制数字,而使用不同的解释可以将某块内存中的二进制数字解释为指令或者数据。

#include<stdio.h>

int main(void) {
	float flo = 20.22;
	int* num = (int*)( & flo); // 将 int 类型的指针指向 float 类型的地址
	printf("int : %d\n", *num);
	printf("float : %f\n", flo);
	char str[33];
	str[32] = '\0';
	int place = 1;
	for (int i = 31; i >= 0; i--) {
		int temp = ( * num) & place;
		(*num) >>= 1;
		str[i] = temp+'0';
	}
	printf("%s : %s\n","binary", str);
	return 0;
}

打印结果:

image

对于 float flo 在内存中的那块地址,使用 float* 和 int* 两种类型的指针,解释是不同的,使用 int * 会被解释为这是一个整数,而使用 float* 则将这块地址解释为一个浮点数。


总结:对于同一块地址中保存的一个二进制数:01000001101000011100001010001111 ,不同的解释(指针)会使这块地址表达不同意义。

posted @ 2022-06-14 16:14  Jyang~  阅读(113)  评论(0)    收藏  举报