C语言学习笔记(三) 使用union检查系统大小端模式

问题:请写一个C函数,若处理器Big_endian的,则返回0;若是Little_endian的,则返回1。

简单复习下大小端的概念:

大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。

小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。

提示:C语言中的char占1个字节,而int占4字节,因此如果某个int变量被赋值为1,则大端模式内存布局(由低到高,下同)应该为0x00,0x00,0x00,0x01,小端模式为0x01,0x00,0x00,0x00。因此可以利用union结构的特性测试大小端。参考代码如下:

    int checkSystem()    
    {
    	union check
    	{
    		int i;
    		char ch;
    	} c;
    	c.i=1;
    	return(c.ch==1);
    }
时间: 2024-10-10 06:16:06

C语言学习笔记(三) 使用union检查系统大小端模式的相关文章

JavaScript--基于对象的脚本语言学习笔记(三)

事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript"> String.prototype.trim=function(){ r

Go语言学习笔记(三) [控制结构、内建函数]

日期:2014年7月21日 一.控制结构 1.Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语句,另外Go中还提供了类型选择和多路通信转接器的select.Go的控制结构的语法和C相比有所不同,它不需要圆括号,但语句体必须总是包含在大括号内. 2.控制结构语法 1)if-else (1)if后紧跟单个条件 例如:if x > 0 {   //{必须和if在同一行,这是Go语法规定的,如果换行写,编译

C语言学习笔记frist---输入两个数比较大小

C#学习中,问道艰辛,今自C学起,第一个函数学习:输入两个数比较大小,仅作练习: #include "stdafx.h" #include<stdio.h> // 包含stdio.h头文件 int max(int, int); // 函数声明 int main(){ int a,b; // 声明两个整型变量 printf("input two integer:");// 以空格为分隔 scanf("%d %d",&a,&

union关键字及大小端模式

1. union 关键字 union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在 union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址.例子如下: union StateMachine { char character; int number; char *str; double exp; }; 一个 union 只配置一个足够大的空间以来容纳最大长度的数据成员,以上例而言,最大长度是 double 型

【GO】GO语言学习笔记三

7.数组: 几乎是最常用的数据类型了... 数组就是指一系列同一类型数据 的集合.数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数 组的长度. 常规的数组声明方法: [32]byte // 长度为32的数组,每个元素为一个字节 [2*N] struct {x , y int32} //复杂类型数组 [1000]*float32 //指针数组 [3][5]int //二维数组 [2][2][2]float64 // 等同于[2]([2]([2]float64))

c语言学习笔记三

第三章,函数 字符串函数 //strcmp int my_strcmp(char *str1,char *str2) {   while(*str1 = = *str2)   /*不可用while(*str1++= =*str2++)来比较,当不相等时仍会执行一次++,      return返回的比较值实际上是下一个字符.应将++放到循环体中进行.*/      {         if(*str1 = = '\0') {             return 0: }         str

C语言学习笔记(三) 输入输出函数的基本用法以及运算符

printf() ——将内容输出到显示器上 四种用法 1.printf("字符串");   直接输出字符串 2.printf("输出控制符",输出参数); 3.printf("输出控制符1 输出控制符2",输出参数1,输出参数2); 输出控制符和输出参数的个数必须一致: 4.printf("输出控制符 非输出控制符",输出参数); 输出控制符包含如下: 1.%d —— int 2.%ld ——  long int 3.%c —

R语言学习笔记

參考:W.N. Venables, D.M. Smith and the R DCT: Introduction to R -- Notes on R: A Programming Environment for Data Analysis and Graphics,2003. http://bayes.math.montana.edu/Rweb/Rnotes/R.html 前言:关于R 在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(A system for data

Oracle学习笔记三 SQL命令

SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)               下面是这四种SQL语言的详细笔记: Oracle学习笔记三 SQL命令(二):SQL操作语言类别 Oracle数据类型 创建表时,必须为各个列指定数据类型 以下是 Oracle 数据类型的类别: 字符数据类型 CHAR类型 当需要固定长度的字符串时,使用 CHAR 数据类型. CHAR 数据类型存储字母数字值. CH