怎么才能知道小弟我的程序到底用的什么标准的编译器
如何才能知道我的程序到底用的什么标准的编译器
最近在修改一个以前的工程,是用c语言写的。但是它有很奇怪的标准,比如:变量必须声明在函数开头等等。我查了一下,貌似与ansi c标准很像。
我现在的问题是:
1 我如何才能知道我的程序到底用的什么标准的编译器?
2 如果是ansi c的话,对类型转换有什么特殊限制吗,为什么我现在把short型的变量转成double输出后就总是错误的? 很苦恼?
------解决方案--------------------
早先的C是这样的,而且现在.c文件在vs系列下编译变量也是要定义在前边的,至于short转double会错大概是你写错了或编译器的问题?贴下相关代码
------解决方案--------------------
short s=32767;
double d;
char b[20];
sprintf(b,"%d",s);
sscanf(b,"%lf",&d);
printf("d=%lg\n",d);//d=32767
------解决方案--------------------
最可靠的方法就是看编译器的官方说明文档,里面会详细说明实现了哪些,未实现哪些,如果用的是IDE自带编译器,设置里可能会看出来,如果用的是windows的编译器,印象里它不支持C99标准。
------解决方案--------------------
short a = 100;
printf("a=%d\n",a);
printf("a=%lf\n",(double)a);
输出a的格式码错了吧
最近在修改一个以前的工程,是用c语言写的。但是它有很奇怪的标准,比如:变量必须声明在函数开头等等。我查了一下,貌似与ansi c标准很像。
我现在的问题是:
1 我如何才能知道我的程序到底用的什么标准的编译器?
2 如果是ansi c的话,对类型转换有什么特殊限制吗,为什么我现在把short型的变量转成double输出后就总是错误的? 很苦恼?
------解决方案--------------------
早先的C是这样的,而且现在.c文件在vs系列下编译变量也是要定义在前边的,至于short转double会错大概是你写错了或编译器的问题?贴下相关代码
------解决方案--------------------
short s=32767;
double d;
char b[20];
sprintf(b,"%d",s);
sscanf(b,"%lf",&d);
printf("d=%lg\n",d);//d=32767
------解决方案--------------------
最可靠的方法就是看编译器的官方说明文档,里面会详细说明实现了哪些,未实现哪些,如果用的是IDE自带编译器,设置里可能会看出来,如果用的是windows的编译器,印象里它不支持C99标准。
------解决方案--------------------
short a = 100;
printf("a=%d\n",a);
printf("a=%lf\n",(double)a);
输出a的格式码错了吧