gpt4 book ai didi

c - 如何将存储用户输入的数据类型的字符串传递给 sizeof() 运算符并获取数据类型的大小?

转载 作者:行者123 更新时间:2023-11-30 20:48:10 25 4
gpt4 key购买 nike

实际上,当数据类型(例如 int)存储在字符串或字符数组中时,并且字符串作为参数传递给 sizeof 运算符,程序返回字符数组大小,而不是替换存储在字符串中的实际数据类型作为参数。

那么是否有可能以任何方式替换字符串的内容作为参数?

这是 中的代码

#include <stdio.h>
int main()
{
char s[20];

printf("Please enter the data type to find it's size!: ");

scanf("%s",&s);

printf("The size of %s data type in c language is: %d",s,sizeof(s));

return 0;

}

最佳答案

首先,sizeof是一个编译时运算符。除了 VLA 作为参数之外,操作发生在编译时,因此您无法在运行时修改参数并期望它神奇地工作。

也就是说,即使可以在运行时进行评估,它也没有意义,因为在编译的程序中,数据类型不再(需要)存在。编译器根据数据类型分配内存(映射),从而结束数据类型的存在。它不存在于二进制文件中,因此您的程序没有 intshort 的概念。

您能做的最好的事情是,拥有可用/允许的类型/变量的列表,比较输入的匹配类型,然后返回对该变量/类型应用 sizeof 运算符的结果。

最后但并非最不重要的sizeof 生成 size_t 类型的结果,您必须使用 %zu打印结果的格式说明符。

关于c - 如何将存储用户输入的数据类型的字符串传递给 sizeof() 运算符并获取数据类型的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45282726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com