在C(不是C++/C#)中,如何检查变量是否属于某种类型?
例如,像这样:
double doubleVar;
if( typeof(doubleVar) == double ) {
printf("doubleVar is of type double!");
}
Run Code Online (Sandbox Code Playgroud)
或者更一般:我如何比较两种类型,以便compare(double1,double2)评估为true,compare(int,double)并将评估为false.我还想比较不同构图的结构.
基本上,我有一个函数,它对"struct a"和"struct b"类型的变量进行操作.我想用"struct a"变量做一件事,用"struct b"变量做另一件事.由于C不支持重载并且void指针丢失其类型信息,我需要检查类型.顺便说一句,typeof如果你不能比较类型,那么拥有一个算子会有什么意义呢?
对于我来说,sizeof方法似乎是一个实用的解决方案.谢谢你的帮助.我仍然觉得它有点奇怪,因为类型在编译时是已知的,但是如果我想象机器中的进程我可以看到,为什么信息不是按类型存储,而是按字节大小存储.除了地址之外,大小是唯一真正相关的东西.
是voidC编程语言中的数据类型吗?如果是这样,它可以存储什么类型的值?如果我们有int,float,char,等,来存储值,为什么void需要?