在文章的开头我首先要介绍一下大小端的概念:
低地址 01 00 00 00 高地址
高地址 00 00 00 01 低地址
但是我们应该怎样判断当前计算机的存储模式呢??
首先用指针法:
<span style="font-size:18px;">#include<stdio.h> int main() { char c; int a=1; int *p=&a; c = *p; if(c==a) { printf("xiaoduan\n"); } else { printf("daduan\n"); } return 0; }</span>
在介绍第二种解法前,我们首先简单介绍一下联合体的概念:
在计算机科学中,联合体(英语:union)一种具有多个类型或格式的值,或者把它定义为一种由具有这样的值的变量形成的数据结构。一些编程语言可以支持被称为“联合体”的特殊的资料类型,来表示上述的变量。换句话说,一个联合体的定义(defenition)会指定一些允许的可以存储在实例内的原始数据类型(例如整型,浮点)。和记录(record)(或结构,structure)那些可以被定义去包含一个浮点数或整型不同的是,在一个联合体任何时候只有一个值。
联合体法:
<span style="font-size:18px;">#include<stdio.h> union UN { int a; char c; }un; int main() { union UN un; un.a=1; if(un.c=1) { printf("xiaoduan\n"); } else { printf("daduan\n"); } return 0; }</span>
两个的运行结果都是:
原文地址:http://blog.csdn.net/liuxiaoqian_/article/details/45775335