首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找正确的c#类型

查找正确的c#类型
EN

Stack Overflow用户
提问于 2013-07-01 23:00:44
回答 3查看 136关注 0票数 0

最近,我花了很长时间试图让一个size_t变量接受getline()的输出(可能是被this误导了),但最终注意到ssize_t (是的,两个s)是正确的类型。有没有所有可能的变量声明的列表?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-01 23:17:09

在C中没有所有可能类型的列表,因为在后置上有无限多的类型(或者接近到无限多)。

我建议你从错误的方向来处理这个问题。知道所有可能的类型对编程没有多大帮助;您需要知道的是将哪种类型用于给定的目的。

对于您想要调用的任何函数(包括getline),您需要做的第一件事是阅读该函数的文档。

语言定义的类型相对较少。有一些内置的类型,比如charintdouble等等,还有许多由标准库定义的类型。请参考任何像样的C参考资料,或C标准本身。最新的草案是N1570。(这是2011 ISO C标准的草案,尚未完全实现。)

更多的类型由二级标准定义。POSIX可能是其中最值得注意的。例如,ssize_t (与size_t对应的带符号类型)是由POSIX定义的,而不是由ISO定义的。

请务必阅读文档,以找出给定类型所保证的特征。例如,size_t保证是无符号整数类型,而time_t保证是算术类型(它可以是有符号的、无符号的,甚至是浮点类型)。如果你想编写可移植的代码,不要做任何超出保证范围的假设。

票数 1
EN

Stack Overflow用户

发布于 2013-07-01 23:03:44

好吧,也许不是这样,但是如果您知道要调用哪个函数(getline() in your case),那么该函数的手册页面当然会指定正确的类型。

标准库中没有那么多,至少不是常用的。

票数 3
EN

Stack Overflow用户

发布于 2013-07-01 23:04:09

在C语言中,可以使用typedef定义自己的类型名称。示例:

代码语言:javascript
运行
复制
typedef int myowntype;

因此,可能的类型名称取决于您包含的头文件。因此,您必须查阅所使用的每个库的文档。

在标准库中,只有几个类型名称,例如time_tsize_t

正如注释中所指出的,例如,也可以使用struct声明自己的类型。然后,可以为新类型定义类型名称:

代码语言:javascript
运行
复制
typedef struct {
    int a;
    int b;
} my_type;

定义新类型struct {int a; int b;}并为此结构类型定义新类型名称my_typestruct本身也可以定义一个使用其名称中的结构编写的类型名称:

代码语言:javascript
运行
复制
struct my_struct {
    int a;
    int b;
}

定义可用于声明变量的新类型和类型名称struct my_struct

代码语言:javascript
运行
复制
struct my_struct a;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17407585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档