打印
[疑难问答]

typeof关键字

[复制链接]
2177|45
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jackcat|  楼主 | 2023-10-16 17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
typeof关键字是C语言中的一个新扩展。只要可以接受typedef名称,Sun Studio C 编译器就可以接受带有typeof的结构,包括以下语法类别:

声明
函数声明符中的参数类型链表和返回类型
类型定义
类型操作符s
sizeof操作符
复合文字
typeof实参
编译器接受带双下划线的关键字:__typeof和__typeof__。本文中的例子并没有遵循使用双下划线的惯例。从语句构成上看,typeof关键字后带圆括号,其中包含类型或表达式的名称。这类似于sizeof关键字接受的操作数(与sizeof不同的是,位字段允许作为typeof实参,并被解释为相应的整数类型)。从语义上看,typeof

使用typeof的声明示例
下面是两个等效声明,用于声明int类型的变量a。

typeof(int) a; /* Specifies variable a which is of the type int */
typeof('b') a; /* The same. typeof argument is an expression consisting of
                    character constant which has the type int */

以下示例用于声明指针和数组。为了进行对比,还给出了不带typeof的等效声明。

typeof(int *) p1, p2; /* Declares two int pointers p1, p2 */
int *p1, *p2;

typeof(int) * p3, p4;/* Declares int pointer p3 and int p4 */
int * p3, p4;

typeof(int [10]) a1, a2;/* Declares two arrays of integers */

int a1[10], a2[10];

如果将typeof用于表达式,则该表达式不会执行。只会得到该表达式的类型。以下示例声明了int类型的var变量,因为表达式foo()是int类型的。由于表达式不会被执行,所以不会调用foo函数。

登录后复制
extern int foo();
typeof(foo()) var;

使用typeof的声明限制请注意,typeof构造中的类型名不能包含存储类说明符,如extern或static。不过允许包含类型限定符,如const或volatile。例如,下列代码是无效的,因为它在typeof构造中声明了extern:typeof(extern int) a;下列代码使用外部链接来声明标识符b是有效的,表示一个int类型的对象。下一个声明也是有效的,它声明了一个使用const限定符的char类型指针,表示指针p不能被修改。extern typeof(int) b;
typeof(char * const) p = "a";


使用特权

评论回复
沙发
tpgf| | 2023-11-2 13:57 | 只看该作者
使用typeof关键字的好处是什么呢

使用特权

评论回复
板凳
nawu| | 2023-11-2 14:37 | 只看该作者
typeof操作符返回一个字符串,表示未经计算的操作数的类型。

使用特权

评论回复
地板
zljiu| | 2023-11-2 15:29 | 只看该作者
不用知道函数返回什么类型,可以使用typeof()定义一个用于接收该函数返回值的变量

使用特权

评论回复
5
tfqi| | 2023-11-2 19:01 | 只看该作者
typeof的参数可以是两种形式:表达式或类型

使用特权

评论回复
6
gwsan| | 2023-11-2 19:32 | 只看该作者
它可以在宏定义中动态获取相关结构体成员的类型

使用特权

评论回复
7
aoyi| | 2023-11-2 19:58 | 只看该作者
typeof() 是GUN C提供的一种特性,它可以取得变量的类型,或者表达式的类型

使用特权

评论回复
8
loutin| | 2023-11-5 10:12 | 只看该作者
typeof关键字是JavaScript中的一个操作符,用于获取变量的数据类型。

使用特权

评论回复
9
biechedan| | 2023-11-5 10:26 | 只看该作者
typeof是C/C++中的一个关键字,主要用于获取变量的数据类型。

使用特权

评论回复
10
vivilyly| | 2023-11-5 11:06 | 只看该作者
它可以让你在编译时检查变量或表达式的类型,从而提高代码的可读性和可维护性。

使用特权

评论回复
11
linfelix| | 2023-11-5 15:09 | 只看该作者
typeof只能用于变量,不能用于表达式或者常量。例如,typeof(x + y)是错误的,因为x + y是一个表达式,而不是一个变量。

使用特权

评论回复
12
wengh2016| | 2023-11-5 17:03 | 只看该作者
typeof操作符也可以用于检查函数和数组等数据类型

使用特权

评论回复
13
mikewalpole| | 2023-11-5 17:44 | 只看该作者
回函数的返回类型: 如果变量是一个函数,typeof可以返回该函数的返回类型,例如"function"

使用特权

评论回复
14
earlmax| | 2023-11-5 20:19 | 只看该作者
在某些情况下,你可以使用 typeof 关键字进行类型转换,例如将指针转换为整数类型。

使用特权

评论回复
15
pixhw| | 2023-11-8 11:26 | 只看该作者
使用 typeof 关键字可以返回一个表达式或变量的类型

使用特权

评论回复
16
updownq| | 2023-11-8 14:32 | 只看该作者
typeof 关键字在 C 语言中用于获取变量或表达式的数据类型,有助于编写更健壮的代码

使用特权

评论回复
17
maqianqu| | 2023-11-8 15:16 | 只看该作者
typeof可以用来获取任何变量的数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如数组、结构体、联合体等)。这对于编写泛型代码或者在运行时动态分配内存等场景非常有用。

使用特权

评论回复
18
10299823| | 2023-11-8 20:19 | 只看该作者
对于数字类型,如果以字符串形式表示(包含小数部分),使用typeof仍然返回number。

使用特权

评论回复
19
elsaflower| | 2023-11-8 21:21 | 只看该作者
typeof 关键字在 C 语言中主要用于获取变量或表达式的数据类型

使用特权

评论回复
20
deliahouse887| | 2023-11-8 21:47 | 只看该作者
typeof 只能用于获取变量或表达式的类型,而不能用于获取函数的参数类型,因此在使用函数时可能需要额外注意

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

1260

帖子

0

粉丝