在UNIX中,有很多的地方使用size_t代替int,请问他们有什么区别?
另外,size_t在那个头文件中声明的?应该是使用typedef吧?
看到一句话“size_t is the unsigned integer type returned by the sizeof operator",大家帮忙理解一下,为什么和sizeof有关
使用size_t是因为这个类型是与平台无关。为什么无关,就是因为他是sizeof的返回直。当你移植你的代码的时候,那不因为平台的不同而不同。大概是在stddef.h里的
2 楼size_t(阿跑) 回复于 2002-07-03 17:06:07 得分 5
size_t 在 stddef.h里定义。
在不同的实现里可能不一定相同,
In Borland implementation of the ANSI C standard, the type size_t is unsigned.
也就是typedef unsigned int size_t;
size_t is the unsigned integer type returned by the sizeof operator
的意思应该是说sizeof(size_t) == sizeof(unsigned int)
3 楼xkak2(矗立云端) 回复于 2002-07-03 17:42:00 得分 15
c中的int long等等的长度是随平台的而变化的,为了保证移植性,所以用一个中间类型size_t代表所有长度的类型,sizeof运算符返回的就是这个类型的数 据。在移植时,可以用typedef来指定该平台上size_t的真实数据类型。比如在win32和unix平台上,就是typedef unsinged int size_t。
4 楼sokoban() 回复于 2002-07-03 19:11:46 得分 0
typedef unsigned int size_t;
unsinged int,unsigned long,size_t还是std::size_t?
首先四种类型都是无符号类型,是用以表示元素个数或者数组索引的最佳类型。在作为函数参数时,不需像有符号类型那样检测值是否小于零。
1. ::size_t还是std::size_t
请使用std::size_t,因为你处于C++的世界。
在此,所有C++标准库组件用以表示元素个数的类型 (比如size()或者operator[])都是std::size_t。
std::size_t count = array.size(); // array是typedef vector<int>
std::size_t index = 0;
array[ index ] = 0;
注意:
1. 如果某个CPP没有使用任何C++标准库组件,那么就有可能需要包含<cstddef> 头文件。
2. std::size_t其实就是::size_t (::size_t被引入到namespace std中(你可以在<cstring>中找到)
基本上我们不会考虑unsigned int和unsigned long,因为处在C++的世界,使用C++标准库组件就是在所难免了。
如果你非要了解其细枝末节的话,那么下面是一份清单:
unsigned int 和 unsigned long比较(不考虑32位以下的平台)
如果不考虑可移植性:
在32位平台上更应该使用unsigned int,因为它:
1. 和unsigned long 一样的大小,32位可以表示到42.9亿。
2. 比unsigned long更常用
3. 和std::size_t是一样的类型
如果是64位平台的话:
1. unsinged int仍是32位,而unsigned long就是64位了。
2. 更应该使用unsigned long因为处理器对64位具有更快的处理速度。
就目前而言,64位平台还不够成熟,所以向64位平台的移植基本不做考虑。
但是如果你坚持要考虑可移植性(注意是硬件32位平台向64位移植,而非软件):
1. 如果对速度敏感:使用unsigned long,无论在32位还是64位都有最快的处理速度。
2. 如果对内存敏感:使用unsigned int,使用内存量不会因平台而改变。
不过通常对于硬件平台的可移植性的考虑都是多余的(不够敏捷哦)。
总结:
请在任何情况下使用std::size_[size=medium][/size]
分享到:
相关推荐
- What size is it? 询问尺寸。 四、一般疑问句的使用场景 - 询问能力:Can you play football? 你会踢足球吗? - 询问状态:Are you happy? 你开心吗? - 询问计划:Are you going to the park tomorrow? 明天...
9. 对具体形容词提问:第6题对“small size”提问,使用疑问词“What size...?”。 10. 使用介词短语表示时间:第7题中的“last Sunday afternoon”可替换为“on Sunday afternoon”。 11. 一般疑问句的构成:第9...
"应为"What size hamburger would you like?" 2. "它在邮局的对面。"应为"It's opposite the post office." 3. "他长得怎么样?"应为"What does he look like?" 4. "你的周末过得怎么样?"应为"How was your weekend...
10. 食物与餐饮:`s______ pizza` 可能是 "size",询问披萨的尺寸;`v______` 可能是 "vegetables",蔬菜配料;`i______ tea` 可能是 "iced",冰茶。 11. 量词与动词:`w______ like` 可能是 "would like",想要的...
祈使句的否定形式是"Don’t"开头,所以选项C "Don’t" 是正确答案。 【知识点四:选择疑问句】 第四题是一个选择疑问句,"Would you like milk_____ juice?" 在两个选择之间使用"or"表示选择关系,所以选项A "or" ...
_______ and unconnected with the Mediterranean 100 years ago."中,"two-thirds"后跟"of"加名词,表示“三分之二的……”,所以选项B "two-thirds of its present size"是正确的,表示黑海的三分之二现在的大小。...
的否定回答是:No, they aren’t. (不,它们不是。) 2. Can I try them on? 的肯定回答是:Of course. Here you are. (当然可以。给你。) 3. This sweater is sixteen yuan. 对价格提问应为:How much is this ...
for (size_t i = 0; i < vec.size(); ++i) { vec_to_map[i] = vec[i]; } ``` 在这个过程中,我们需要注意效率问题。`vector`到`set`的转换由于涉及到红黑树的插入操作,时间复杂度大约是O(n log n),而`vector`到`...
12. (B) "I don’t like hot dogs ________ hamburgers." 在否定句中,"or"用于连接并列成分,表示“或”,所以选B。 13. (B) "_________ a bottle of milk, some hot dogs, and hamburgers on the table." 这是...
值得注意的是,`sizeof`不是函数,其结果类型为`size_t`,定义在头文件`<stddef.h>`中。在不同的平台上,同一种数据类型的`sizeof`可能会有所不同。 ### 数组类型 数组是一组相同类型数据的集合,可以容纳多个数据...
" "What size"询问尺码大小,搭配不定式"to wear"构成疑问句。 7. 过去进行时:"Tom said he ____ at that time." "was cooking"表示过去某一时刻正在进行的动作,是过去进行时态。 8. 宾语从句语序:"I don’t ...
size_t iov_len; }; #endif ``` 完成以上步骤后,执行`make`和`make install`命令。 #### Windows平台下的APR库搭建 **1.1.1 在Windows环境下安装和使用APR库** 在Windows环境下搭建APR库的步骤如下: 1. **...
<br>疑问代码如下: struct _USB_DATA_STRUCT { /* unsigned char command_data[40];//release结果正确 int command_index; int command_size; int numofnod; */ int command...
这些题目主要涵盖的是初中英语语法、词汇和句型的运用,包括动词时态、主谓一致、比较级、疑问句、反意疑问句、代词的使用、介词搭配以及固定短语等知识点。下面对每个题目进行详细解析: 1. ( ) 1. More than a ...
这些题目涵盖的英语知识点包括时态(一般现在时、现在进行时、一般过去时)、情态动词(have to, mustn't)、疑问句的构造、形容词的使用、固定搭配以及日常对话表达等。通过这样的测试,学生可以检验自己在语法、...
3. 疑问句的结构:题目(3)询问周末过得怎么样,使用"How"开头的基本疑问句,正确答案是B.How。 4. It's time for sb. to do sth.:此句型表示“是某人做某事的时候了”,如题目(4)It’s time for us _____home...
1. **错误提示“Can't find error-message file”**:这通常是因为MySQL无法找到错误消息文件。确保配置文件中的`basedir`设置正确,并且文件路径存在。 2. **端口冲突**:如果遇到端口被占用的情况,检查系统是否有...
",要求学生能够正确地用Yes, I did 或 No, I didn't 回答。 7. **助动词Does的使用**:例如"Does she live in Beijing?",考察学生对第三人称单数形式的助动词用法。 8. **现在进行时**:如"I'm watching TV.",...
size_t bytesRead = sourceFile.gcount(); // 获取实际读取的字节数 destFile.write(buffer, bytesRead); // 将读取的数据写入目标文件 } ``` 4. 处理剩余数据:如果源文件最后没有完全填满缓冲区,我们需要检查`...
3. "Don’t iron them ____ high heat." 这里考查的是介词与动词短语的搭配,"at high heat" 表示在高温下。 4. "The pens are made _____ plastic and metal." 这题考察被动语态,"be made of" 表示由...制成,可以...