类型转换

内部类型,如 char int 等,以及其与数字文字量之间的隐式转换总结起来即为:将一种类型的内存内容用另外一种类型进行解释,短则截取,长则用符号位填充,没有符号位(无符号类型)则填充 0

Ø 程序一:

       unsigned char uc = 255;

       char c = uc;

printf("%d\n",c);

输出:-1

解释:将一种类型的内存内容用另外一种类型进行解释。uc是无符号数,占1个字节的内存空间,把255赋值给uc时,内存空间中的二进制如下:

11111111

如果将unsigned charuc转换成char型,那么uc所在的内存空间中的二进制值就会复制到char型变量c的内存空间中,然后引用c时就会以char型对该内存进行解释,这段二进制被解释成char型后就会变成-1

Ø 程序二:

       int i = 255;

       char c = i;

       printf("%d\n",c);

输出:-1

解释:短则截取。对于int型的变量i4个字节,其在内存中的二进制形式如下:

00000000

0000000

00000000

11111111

当将i赋值给char型的变量c时,会将i所在的内存空间中的最低一个sizeof(char)(即一个字节)的内容copyc所在的内存空间中,即只截取适合左值变量大小的空间中的内容。其实用一个4字节的数字文字量给一个char型变量赋初值或用一个8字节的数字文字量给一个intchar型变量赋初值也是类似的情况。

Ø  程序三:

       char c = 2;

       int i = c;

       printf("%d\n",i);

输出:2

Ø 程序四:

       char c = -2;

       int i = c;

       printf("%d\n",i);

输出:-2

Ø 程序五:

       unsigned char c = -2;

       int i = c;

       printf("%d\n",i);

输出:254

解释:长则用符号位填充,没有符号位(无符号类型)则填充0。对于程序三,char型变量c2,在内存中的表示形式如下:

00000010

c用于给int型变量i赋值,即将c转换成int型,先将c的一个字节的内存空间copyi的最低一个字节,然后用c的符号位0填充i剩余的高3个字节,所以i的内存形式如下:

00000000

0000000

00000000

00000010

于是将i的这段内存内容以int型进行解释,即为2

对于程序四,变量c-2,在内存中的表示形式如下:

11111110

c的内存内容复制到i的最低一个字节,并用符号位1填充剩余的高3个字节,得到i的内存形式如下:

11111111

11111111

11111111

11111110

于是将i的这段内存内容以int型进行解释,即为-2

对于程序五,用文字量-2为无符号char型变量c赋值,保存文字量-2的临时4字节内存空间的内容如下:

11111111

11111111

11111111

11111110

将该文字量通过截取最低一个字节的内容复制到unsigned char型变量c的内存空间中,得到c的内存内容如下:

11111110

再将c用于给int型变量i赋值,先将c的一个字节的内存内容copyi的最低一个字节,由于cunsigned char型变量,没有符号位, 所以用0填充i剩余的高3个字节,得到i的内存内容如下:

00000000

00000000

00000000

11111110

i的这段内容以int型进行解释,即为255

注:不管将数字文字量赋给什么类型的变量,都是先将数字文字量用4字节或者8字节的空间按第一节中所述的方式表示,然后再利用本节所述的类型转换方式,将该4/8字节空间中的二进制位复制并转换到新类型。


http://mucian.bokee.com/4136626.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值