对The C Programming Language 中符号与无符号比较一段话的疑惑~指点迷津。

lin_style 2006-01-03 01:31:14
原话如下:

当表达式中包含u n s i g n e d类型的运算分量时,转换规则要复杂一些。主要问题是,在有符号
值与无符号值之间的比较运算取决于机器,因为它们取决于各个整数类型的大小。例如,假定
i n t对象占1 6位,l o n g对象占3 2位,那么,-1L < 1U,这是因为i n t类型的- 1 U被提升为signed long
类型;但-1L > 1UL,这是因为- 1 L被提升为unsigned long类型,因此它是一个比较大的正数。


-1L < 1U 我的理解是,1U类型向-1L类型转换。变为 ,-1L < 1L 所以大
-1L > 1UL 这个就不懂了,-1L转为unsigned long,变为,1L,那1UL>1UL? 这个就不懂了。。。指点指点,,新手ING~~
...全文
118 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vollin 2006-01-03
  • 打赏
  • 举报
回复
强制类型转换是不会修改内存中的值,直接把该类型变成其它类型。
对于内存值 
0xFFFFFFFF是有符号时表示-1,是无符号时表示4294967295(32位整型的最大值)
对于内存值
0x00000001是有符号时表示1,是无符号时还是表示1。
B828 2006-01-03
  • 打赏
  • 举报
回复
楼主都知道,当比较-1L和1UL的时候,把-1L转换成unsigned long,其实并不改变它的值,他的值还是0xffffffff,>号右边的还是1UL,十六进制是0x00000001,当然是-1L > 1UL了。
lin_style 2006-01-03
  • 打赏
  • 举报
回复
先闪了。上课去了。
shenmea00000 2006-01-03
  • 打赏
  • 举报
回复
学习中,~~~~~~~~~~~~~~~
lin_style 2006-01-03
  • 打赏
  • 举报
回复
那1UL>1UL
都成了FFFFFFFF
不就相等了吗?

楼上的可以说得清楚些吗,谢谢~
vollin 2006-01-03
  • 打赏
  • 举报
回复
考虑一下实际的存储就知道了
以32位机示例:
-1实际上是FFFFFFFF
所以变成无符号就实际是最大的整数。
lin_style 2006-01-03
  • 打赏
  • 举报
回复
等好久了呢,要上课了。 。。。。
lin_style 2006-01-03
  • 打赏
  • 举报
回复
555~~~
无人帮帮忙吗
lin_style 2006-01-03
  • 打赏
  • 举报
回复
自己顶个先
C语言是一门广泛应用于系统编程、嵌入式软件和高性能应用开发的高级编程语言。本课程旨在向你介绍C语言的基本概念、语法和编程技巧,使你能够掌握C语言的核心知识,并能够用C语言编写简单到等复杂程度的程序。课程针对0基础初学者,所以课程会由浅入深,由表及里的探索C语言知识框架,慢慢触及C语言本质,课程结构先由简单程序引入,然后拆分程序各个细节,让你逐渐掌握C语言编程的精髓。也会讲解C语言编译过程,怎样将人类描述的语言让计算机能够识别并按我们的意愿运行。C语言程序怎样运行也会详细介绍,了解程序由静到动的过程。课程注重基础理论与实践结合,在重点关注C语言的基础理论知识的同时,我们会结合大量的实际编程练习,对每个重要的知识点和易错的地方都有代码演示并查看程序运行结果,深入理解C语言的运作原理。课程一半内容是理论知识的讲解,另外一半是代码实操。课程由本人全部从0开始编写,从课程架构思考,内容组织,难易程度,章节划分,都融入了本人对C语言的思考,几乎全是干货,如果你渴望成为一名优秀的C语言编程者,那么不要犹豫!欢迎报名参加我们的课程,让我们一起踏上编程的旅程,共同学习和进步!课程源码:https://gitee.com/sliaowalker/c-language-programming

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧