|
发表于 2005-11-15 16:47:30
|
显示全部楼层
Post by zywwzy
填空题目:
以下一段C程序,在基于IA32的操作系统上编译运行,将在屏幕上打印:var1=[ ],var2=[ ],var3=[ ]。
int main(void)
{
int var1=0;
char var2=0;
int var3=0;
char str_val1[]="24\n";
char str_val2[]="32\n";
char str_val3[]="48\n";
sscanf(str_val1,"%d",&var1);
sscanf(str_val2,"%d",&var2);
sscanf(str_val3,"%d",&var3);
printf("var1=%d,var2=%d,var3=%d\n",var1,var2,var3);
}
注:sscanf函数的功能类似scanf,用于从一个字符串输入中获取数据。
竟然没有人答对。不禁感慨万千。
1. 在win2k的操作系统下,使用Visual Studio2003带的编译器,输出结果是
24,32,48。如果是Debug版本,程序运行时会出错。
2. 在TurboC2.0下,char是1个字节,int是2个字节。输出结果是24,32,48
如果先定义var2(char),输出结果是0,32,48
3. 在GCC下,char是1个字节, int是4个字节。输出结果是0,32,48。
从2和3看来,编译器不同,变量在内存中的分布也是不同的,结果也就不同拉。
ps:楼主出题应该慎重和谨慎,这种有不确定答案的题还是少出。 |
|