您的位置:首页 > 编程语言 > C语言/C++

【c/c++笔记】高字节和低字节 动态语言和静态语言等

2013-07-01 11:36 239 查看
一)字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。其实大部分人在实际的开发中都很少会直接和字节序打交道。唯有在跨平台以及网络程序中字节序才是一个应该被考虑的问题。

在所有的介绍字节序的文章中都会提到字节序分为两类:Big-Endian和Little-Endian,引用标准的Big-Endian和Little-Endian的定义如下:

a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

c) 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。

直接上代码:

int a = 0x05060708;

char *ch = (char *)&a;

printf("%d,%d,%d,%d", *(ch + 3), *(ch
+ 2), *(ch + 1), *ch);

在vs上编译输出是:5,6,7,8

看到高位字节排在高地址端,表明是低字节序。

二)关于char强制转化为 unsigned char。

如果char是负数,在c++中是合法的,其结果是该负数对该类型的取值个数求模后的值。

如果把-1赋值给8位的unsigned char,结果是255.

三) 动态语言和静态语言:

强类型语言(静态类型语言)是指需要进行变量/对象类型声明的语言,一般情况下需要编译执行。例如C/C++/Java/C#

弱类型语言(动态类型语言)是指不需要进行变量/对象类型声明的语言,一般情况下不需要编译(但也有编译型的)。例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: