| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 718 人关注过本帖
标题:有关 size_t 的定义
取消只看楼主 加入收藏
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
结帖率:96.55%
收藏
已结贴  问题点数:20 回复次数:2 
有关 size_t 的定义
最近在整理有关c标准库的文档,遇到了一个问题:size_t到底时个什么东西?因为很多地方都在用这个东西,如果没有搞清楚的话自己用着总感觉不踏实。

首先,打开c11的标准看了看,里面有这样两短话
第一段:
size_t
which is the unsigned integer type of the result of the sizeof operator;

第二段:
the types used for size_t and ptrdiff_t should not have an integer conversion rank greater than that of signed long int unless the implementation supports objects large enough to make this necessary.

由此可以确定的两点时
1、size_t时个无符号整型
2、size_t最多是个signed long int

之后,我去我本机找并没有在stddef.h这个头文件中找到直接的定义,可能在别的文件里定义,没有找到。(我的环境时linux + gcc)

之后,我谢了这两句代码
printf("%zd\n",sizeof(size_t));

执行结果是8
我猜测在我本机上size_t应该时被定义成了unsigned long了。
不知道搞对了没有,希望之前关注过这个问题的朋友看看是否是这样。
也请用Visual Studio的朋友帮我找找看相关的头文件里面是如何定义的。
谢谢!
搜索更多相关主题的帖子: conversion necessary objects result should 
2014-12-05 20:14
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
回复 2 楼 zklhp
相关的头文件绝对是有,否则程序无法编译啊。
可能时我没找对文件。
2014-12-05 20:29
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
回复 5楼 TonyDeng
我现在已经不细究类似的这种问题了。
现在感觉自己之前学C语言陷入了一种误区,总想打破砂锅问到底。C语言虽然有标准,但在具体实现的时候并不总是统一的。也就是说,C语言给了编译器一定的自由空间,自己决定一些事情。比如EOF这个东东,以前的时候总以为是-1,有时候看到别人写代码的时候也会用-1来代替。但后来才发现EOF才是C标准真正有的东西,而EOF到底是何值并没有说清楚,就算费力地搞清楚,也是毫无意义的。
2014-12-11 15:40
快速回复:有关 size_t 的定义
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015695 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved