获取变量';C中的运行时类型

获取变量';C中的运行时类型,c,reflection,casting,type-conversion,allocation,C,Reflection,Casting,Type Conversion,Allocation,我可以在C中获取程序变量的类型,这些变量在运行时存在于特定内存段中 C无法识别以下方面的错误: int k=5; float s= 3.4; k=s; printf("%d", k); 我试图在运行时更改变量的类型。C是一种静态类型语言,您不能更改变量的类型。此代码: int k=5; float s= 3.4; k=s; //type conversion 没有更改k的类型,k仍然是int类型,它所做的只是将float值(3.4f)转换为int(即3),并将int值指定为k 顺便说

我可以在C中获取程序变量的类型,这些变量在运行时存在于特定内存段中

C无法识别以下方面的错误:

int k=5;
float s= 3.4;
k=s;
printf("%d", k);

我试图在运行时更改变量的类型。

C是一种静态类型语言,您不能更改变量的类型。此代码:

int k=5; 
float s= 3.4; 
k=s;   //type conversion
没有更改
k
的类型,
k
仍然是
int
类型,它所做的只是将
float
值(
3.4f
)转换为
int
(即
3
),并将
int
值指定为
k

顺便说一句,上面的代码中还有另一种类型转换,即:

float s = 3.4;

因为
3.4
是类型
double

C是静态类型语言,所以不能更改变量的类型。此代码:

int k=5; 
float s= 3.4; 
k=s;   //type conversion
没有更改
k
的类型,
k
仍然是
int
类型,它所做的只是将
float
值(
3.4f
)转换为
int
(即
3
),并将
int
值指定为
k

顺便说一句,上面的代码中还有另一种类型转换,即:

float s = 3.4;

因为
3.4
是类型
double

C是静态类型语言,所以不能更改变量的类型。此代码:

int k=5; 
float s= 3.4; 
k=s;   //type conversion
没有更改
k
的类型,
k
仍然是
int
类型,它所做的只是将
float
值(
3.4f
)转换为
int
(即
3
),并将
int
值指定为
k

顺便说一句,上面的代码中还有另一种类型转换,即:

float s = 3.4;

因为
3.4
是类型
double

C是静态类型语言,所以不能更改变量的类型。此代码:

int k=5; 
float s= 3.4; 
k=s;   //type conversion
没有更改
k
的类型,
k
仍然是
int
类型,它所做的只是将
float
值(
3.4f
)转换为
int
(即
3
),并将
int
值指定为
k

顺便说一句,上面的代码中还有另一种类型转换,即:

float s = 3.4;


因为
3.4
是类型
double

为了更好的观众切换,标签与
c
标签动态链接。c是静态类型,没有反射机制。这在
c
中称为类型转换或类型转换。一个或多个子类型的数据可以在运行时根据需要转换为超类型,以便程序正确运行。在你的代码中,从float到int的转换导致小数部分被截断。@SunEric,不,你的词汇表错了。正如您的链接所建议的,这不是隐式转换,而是转换。根据定义,强制转换是一种显式转换。这是一种隐式转换,其中浮点转换为int,就好像在它前面显式放置了一个
(int)
强制转换一样。变量的类型在C中不会改变,因为C是一种静态类型的语言。为了更好地吸引读者,请切换标记与
C
标记的动态链接。C是静态类型的,没有反射机制。这在
C
中称为类型转换或类型转换。一个或多个子类型的数据可以在运行时根据需要转换为超类型,以便程序正确运行。在你的代码中,从float到int的转换导致小数部分被截断。@SunEric,不,你的词汇表错了。正如您的链接所建议的,这不是隐式转换,而是转换。根据定义,强制转换是一种显式转换。这是一种隐式转换,其中浮点转换为int,就好像在它前面显式放置了一个
(int)
强制转换一样。变量的类型在C中不会改变,因为C是一种静态类型的语言。为了更好地吸引读者,请切换标记与
C
标记的动态链接。C是静态类型的,没有反射机制。这在
C
中称为类型转换或类型转换。一个或多个子类型的数据可以在运行时根据需要转换为超类型,以便程序正确运行。在你的代码中,从float到int的转换导致小数部分被截断。@SunEric,不,你的词汇表错了。正如您的链接所建议的,这不是隐式转换,而是转换。根据定义,强制转换是一种显式转换。这是一种隐式转换,其中浮点转换为int,就好像在它前面显式放置了一个
(int)
强制转换一样。变量的类型在C中不会改变,因为C是一种静态类型的语言。为了更好地吸引读者,请切换标记与
C
标记的动态链接。C是静态类型的,没有反射机制。这在
C
中称为类型转换或类型转换。一个或多个子类型的数据可以在运行时根据需要转换为超类型,以便程序正确运行。在你的代码中,从float到int的转换导致小数部分被截断。@SunEric,不,你的词汇表错了。正如您的链接所建议的,这不是隐式转换,而是转换。根据定义,强制转换是一种显式转换。这是一种隐式转换,其中浮点转换为int,就好像在它前面显式放置了一个
(int)
强制转换一样。变量的类型在C中不会改变,因为C是一种静态类型的语言。我现在需要的是一种检索在数据段中分配的变量并引用这些变量的方法。如果是操作系统在运行时管理虚拟内存变量,我如何使用操作系统的功能?Int变量有32位,与浮点变量相同。当我在Linux bash中使用MN命令或Objdump命令时。。我只得到变量位的地址。那么,操作系统有什么不同呢