如何用C++获取运行时变量的类型

如何用C++获取运行时变量的类型,第1张

效力是做好工作的魂灵 在上秦小麟教员的数据库实现技巧的时辰,教员提到了一个题目:如安在运行时获取一个变量类型,这用C实现如同要大费周折。今天正好碰着一个题目想看看C&#43;&#43;STL中的sort算法的实现,发明里面有个技能可以很轻易做到这一点。我就立即本身做了一个实验。如下可以获取运行时变量的类型。人生一世不就是为了化短暂的事物为永远的吗?要做到这一步,就须懂得如何器重这短暂和永远。 此中间思惟就是,应用模板函数的重载,是什么类型的参数就去调用参数是那个类型的函数。如许就让编译器去本身辨认,而编译器当然知道每个变量的类型。这让我想去商量那些我经常用到的STL算法的实现,若是你也经常应用,何不借此机会好好研究一下呢?我感触感染至少有几个益处。1 加强对C&#43;&#43;说话的懂得2 加强法度的设计才能3 加强算法解析与设计的才能#include<iostream>using namespace std;void PrintType(int t){cout<<"int type";}void PrintType(char t){cout<<"char type";}void PrintType(long t){cout<<"long type";}template<typename T> inlinevoid ValueType(T t){PrintType(t);}int main(){int a;char c;ValueType(a);cout<<endl;ValueType(c);cout<<endl;return 0;} 上例的功能很轻易扩大,若是你向本身的项目添加了一个新的类型,那么只要重载一个PrintValue( )即可。这仅仅是输出变量的类型,若是你还想再获取变量的类型的时辰做更多的工作的话,显然也是很轻易做到的。比如你想先获取变量的类型,如许之后才干断定分派给变量几许空间,那么这个也可以轻松实现,只须要改变PrintValue的功能即可。这里可以写一个int PrintValue(YourType t) ,她甚至应当有一个更好的名字比如int Memory(Type t)。 在不改变函数名的同时对上述函数稍加批改就可以实现输出传入参数应当分派的内存大小。

1、首先在c语言中,long long 是C99标准对整形类型做的扩展,每个long long类型的变量占8字节,64位。如下图使用%lld输出。

2、这种输出方法的结果如下图所示,可以看到输出结果是0,而很明显输出的结果不应该为零,也就是说输出结果是错误的。

3、这时要看下是不是函数有问题,采取的方法如下图所示。

4、修正之后的输入结果下图所示,通过这个过程,得出的结论是输出long long类型的数据应该使用prinf的%lld格式,注意输出函数不要写错。

5、最后输出bool类型的数据,其使用Printf的输出格式如下图所示。

6、最后输出结果如下图所示,就完成了。

如下可以获取运行时变量的类型。 其中心思想就是,运用模板函数的重载,是什么类型的参数就去调用参数是那个类型的函数。这样就让编译器去自己识别,而编译器当然知道每个变量的类型。这让我想去探究那些我经常用到的STL算法的实现,如果你也经常使用,何不借此机会好好研究一下呢?我感觉至少有几个好处。 1、增强对C++语言的理解 2、增强程序的设计能力 3、增强算法分析与设计的能力#include

using namespace std;void PrintType(int t){cout

- typeof

  + 可以识别标准类型(Null除外)

  + 不能识别对象类型(Function除外)

- instanceof

  + 能判别内置对象类型

  + 不能判别原始类型

  + 能判别自定义类型

  + 结合1和3,能识别所有对象类型

- ObjectprototypetoStringcall

  + 可以识别标准类型以及内置(build-in)对象类型

  + 无法识别自定义对象类型

- constructor(生成函数的构造函数本身)

  + 能判别标准类型(Undefined/Null除外)

  + 能判别内置对象类型

  + 能判别自定义对象类型

//类型判别

function type(obj) {

    return ObjectprototypetoStringcall(obj)slice(8, -1);

}

//构造器类型判别

function getConstructorName(obj) {

    return obj && objconstructor && 

        objconstructortoString()match(/function\s([^(]))[1];

}

方法如下:

type(变量),输出的结果就是变量的类型;

在Python里面变量在声明时,不需要指定变量的类型,变量的类型是动态指定的;

也就是说变量的类型,根据给出的赋值语句决定。

用typeof(var) 来返回一个数据类型

返回的可能值有

'undefined' - 如果变量是 Undefined 类型的

'boolean' - 如果变量是 Boolean 类型的

'number' - 如果变量是 Number 类型的

'string' - 如果变量是 String 类型的

'object' - 如果变量是一种引用类型或 Null 类型的

if(typeof(123)=='number')alert('this is a number')

以此类推

以上就是关于如何用C++获取运行时变量的类型全部的内容,包括:如何用C++获取运行时变量的类型、c语言中,怎么判断变量的类型如何判断一个变量是int还是long int(不通过声明)、如何用C语言获取运行时变量的类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9626158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存