,关于c的小疑点
求助,关于c的小问题
大家好!
如果在c中定义上述代码,在使用printf输出elem_type类型的数据时,如何能自动根据elem_type的类型进行输出啊?
比如:
------解决思路----------------------
用if + typeid判断进行输出
------解决思路----------------------
C语言中没有直接的办法,可以尝试:
------解决思路----------------------
------解决思路----------------------
如果是非内置类型,怎么办?
------解决思路----------------------
请牢记:源代码本身的书写是否结构化或面向对象或符合设计模式或敏捷…并不重要,重要的是你是否使用结构化或面向对象或符合设计模式或敏捷…的方法命名标识符、阅读、修改、检查、测试源代码。
意思是你程序结构看上去再合理,再简洁,也不一定比看上去一团乱麻的程序结构在运行或修改时更不易出错,更方便修改,出错了更容易找到哪里出错和具体出错的原因,更容易改正错误。
试对比
图书馆(对图书的分类够结构化了吧)
和
搜索引擎(可看作是扁平化任何结构数据,仅支持全文检索)
哪个处理信息更方便、更高效。
所以
与其费劲去重构代码让其看上去更简洁、更合理
不如费劲学习grep、sed、awk、……这类全文搜索和批处理编辑的工具。
结构越复杂,越难修改,越难除错。
有时(甚至大多数时候),看上去越合理、越简洁的代码,运行起来性能越差,出错时查找原因越难,找到出错原因后改正越费劲。
程序员要做的不是尽力避免错误,而是聚焦在快速发现并改正错误。真正以快速方式轻易解决错误,“快速的失败”远胜过“预防错误”。Fred George
------解决思路----------------------
#ifdef xxx
typedef int elem_type;
#define ELEM_FORMAT "%d"
#else
typedef char elem_type;
#define ELEM_FORMAT "%c"
#endif
....
printf("Some Worlds" ELEM_FORMAT "Other Worlds", var_of_elem);
------解决思路----------------------
可以考虑使用sizeof进行判断。
大家好!
#typedef int elem_type;
如果在c中定义上述代码,在使用printf输出elem_type类型的数据时,如何能自动根据elem_type的类型进行输出啊?
比如:
elem_type是 int 那么 printf("%d",....)
elem_type是 char 那么 printf("%c",....)
------解决思路----------------------
用if + typeid判断进行输出
------解决思路----------------------
C语言中没有直接的办法,可以尝试:
if(sizeof(elem_type) == 1){
printf("%c",....);
}
else{
printf("%d",....);
}
------解决思路----------------------
switch(sizeof(elem_type))
{
case sizeof(int):printf("int");break;
case sizeof(char):printf("char");break;
case sizeof(double):printf("double");break;
}
------解决思路----------------------
如果是非内置类型,怎么办?
------解决思路----------------------
请牢记:源代码本身的书写是否结构化或面向对象或符合设计模式或敏捷…并不重要,重要的是你是否使用结构化或面向对象或符合设计模式或敏捷…的方法命名标识符、阅读、修改、检查、测试源代码。
意思是你程序结构看上去再合理,再简洁,也不一定比看上去一团乱麻的程序结构在运行或修改时更不易出错,更方便修改,出错了更容易找到哪里出错和具体出错的原因,更容易改正错误。
试对比
图书馆(对图书的分类够结构化了吧)
和
搜索引擎(可看作是扁平化任何结构数据,仅支持全文检索)
哪个处理信息更方便、更高效。
所以
与其费劲去重构代码让其看上去更简洁、更合理
不如费劲学习grep、sed、awk、……这类全文搜索和批处理编辑的工具。
结构越复杂,越难修改,越难除错。
有时(甚至大多数时候),看上去越合理、越简洁的代码,运行起来性能越差,出错时查找原因越难,找到出错原因后改正越费劲。
程序员要做的不是尽力避免错误,而是聚焦在快速发现并改正错误。真正以快速方式轻易解决错误,“快速的失败”远胜过“预防错误”。Fred George
------解决思路----------------------
#ifdef xxx
typedef int elem_type;
#define ELEM_FORMAT "%d"
#else
typedef char elem_type;
#define ELEM_FORMAT "%c"
#endif
....
printf("Some Worlds" ELEM_FORMAT "Other Worlds", var_of_elem);
------解决思路----------------------
可以考虑使用sizeof进行判断。