免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: zhanghuafeng25
打印 上一主题 下一主题

[内核入门] linux中的1UL不知道是什么意思 [复制链接]

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
11 [报告]
发表于 2013-04-25 18:19 |只看该作者
uliux 发表于 2013-04-25 17:23
我说的c语言的规范是C99或者编辑器的约定俗成的用法,要靠你慢慢积累的,哪有书我也想看看呢!

C99标准网上大把。。。

论坛徽章:
0
12 [报告]
发表于 2013-04-25 20:11 |只看该作者
长见识了。

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
13 [报告]
发表于 2013-04-25 21:20 |只看该作者
能从UL扯到C99,CU治学严谨

论坛徽章:
0
14 [报告]
发表于 2013-04-25 21:55 |只看该作者
回复 13# daniel_11


    码农也是要开心的,不能整天苦个脸!!!!

论坛徽章:
0
15 [报告]
发表于 2013-05-07 22:56 |只看该作者
本帖最后由 l4rmbr 于 2013-05-07 23:06 编辑

*** 短答案 ***

这是C语言中标记整数常量的标识, UL表示说这个1是一个unsigned long 的常量(因为1是在unsigned long
的表示范围之内)

*** 长答案 ***

具体地, C标准规定: 整数常量的类型是第一个可以表示该数值的整型. 比如, 1不加UL的
话, 默认地它的类型是int, 这是一个有符号类型哦. 而内核中为了限制说这个值是个无符号的
值, 就明确地标出UL,表示:

这是个1, 它能被一个unsigned long 类型的整型表示, 所以它的类型就是unsigned long,
你(编译器)不需要费心再为我去推算它的类型了. 

另附, C标准中关于一个整数是如何决定它类型的优先级表:

后缀       类型
无         int
                       long int
                       long long int

u or U              unsigned int
                       unsigned long int
                       unsigned long long int

l or L               long int
                       long long int

ul or UL          unsigned long int
                       unsigned long long int

ll or LL           long long int

ull or ULL       unsigned long long int

注意, 在上表中,比如对u, 则编译器依次判断常量值是否在unsigned int表示范围内, 是类型就是unsigned int, 
否则, 是否在unsigned long int表示范围内, 是类型就是unsigned long int,
否则, 是否在unsigned long long int表示范围内, 是类型就是unsigned long long int.

其余一样道理.

更详细请参考C99标准:
ISO/IEC 9899:1999(草案) 6.4.4.1 Integer constants


论坛徽章:
0
16 [报告]
发表于 2013-05-07 23:02 |只看该作者
瀚海书香 发表于 2013-04-23 13:21
回复 1# zhanghuafeng25
默认常量是int型,这里指定为unsigned long型。


默认是什么类型还得看这个常量值多大.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP