首页 > 解决方案 > 是否可以在 C 中找到变量的数据类型?

问题描述

我知道在输入操作过程中非常清楚地提到了但想知道。就像在 Python3.6 中一样,我们有“type()”函数。只是好奇而已。

标签: c

解决方案


只要您提前知道您关心的类型,您就可以使用 C11 中的_Generic()做一些事情:

#include <stdio.h>

#define Type(x) _Generic((x),                   \
                         int: "int",            \
                         short: "short",        \
                         long: "long",          \
                         char: "char",          \
                         float: "float",        \
                         double: "double",      \
                         default: "unknown"     \
                         )

int main(void) {
  int i;
  short s;
  long lng;
  long long llng;
  char c;
  float f;
  double d;
  printf("%s\n", Type(i));
  printf("%s\n", Type(s));
  printf("%s\n", Type(lng));
  printf("%s\n", Type(llng));
  printf("%s\n", Type(c));
  printf("%s\n", Type(f));
  printf("%s\n", Type(d));
}

编译和运行时产生:

int
short
long
unknown
char
float
double

推荐阅读