关于 带你学C带你装13第一季 S1E30 奇怪的地方
本帖最后由 Sboy 于 2017-1-18 16:14 编辑S1E30 函数指针和指针函数
最下面例子根据 输入公式计算 结果
当输入5-+ 回车结果 是 5 - 134513251
输入5+-回车结果是 5 + 134513251
请问 134513251怎么来的 {:9_223:}
代码:
#include <stdio.h>
int add(int x,int y);
int sub(int x1,int y1);
int calc(int (*p)(int a,int b),int c, int d);
int (*choice(char op))(int,int);
int add(int x,int y)
{
return x+y;
}
int sub(int x1, int y1)
{
return x1-y1 ;
}
int calc(int (*p)(int a,int b),int c,int d)
{
return (*p)(c,d);
}
int (*choice(char op)) (int ,int)
{
switch(op)
{
case '+':return add;
case '-':return sub;
}
}
int main()
{
int n1;
int n2;
char op;
int (*p)(int,int);
printf("输入计算公式(如:1+3):");
putchar('\n');
scanf("%d%c%d",&n1,&op,&n2);
p=choice(op);
printf("%d %c %d= %d\n",n1,op,n2,calc(p,n1,n2));
return 0;
}
调试吗
因为你输入 5-+
scanf赋值到 op变量后终止,n2并没有赋值,也没有初始化
本帖最后由 Sboy 于 2017-1-18 14:08 编辑
人造人 发表于 2017-1-18 13:31
调试吗
因为你输入 5-+
嗯 n2故意没有输入值
那这个134513251 代表什么呢 怎么出来的呢 <人鱼大神.h>
本银纯 彩笔 {:10_266:} Sboy 发表于 2017-1-18 14:02
嗯 n2故意没有输入值
那这个134513251 代表什么呢 怎么出来的呢
可以看到没有初始化,n2就是 0xcccccccc
0xcccccccc 就是-858993460
人造人 发表于 2017-1-18 14:20
可以看到没有初始化,n2就是 0xcccccccc
0xcccccccc 就是-858993460
{:9_228:} get
多谢
页:
[1]