全局和局部变量

艾西瓦娅·沙(Aishwarya Shah)
#include<>
int calc(int,int,char);
void main()
{
    int a,b;
    char c;
    printf("enter 2 nos");
    scanf("%d%d",&a,&b);
    printf("enter op");
    scanf("%s",&c);
    printf("the ans is %d\n",calc(a,b,c));
}
int calc(int a,int b,char c)
{
    int ans;
    switch(c)
    {
        case'+':ans=a+b;break;
        case'-':ans=a-b;break;
    }
    return ans;
}

为什么该程序将输出表示为b ...当我将a,b和c用作全局变量时可以工作...如果我希望将它们作为局部变量...我应该怎么做...使用函数

贾伯沃基(Jabberwocky)
char c;
...
scanf("%s",&c);

即使c是全局变量,也是完全错误的

scanf将从键盘上输入内容,并将键入的字符串存储在作为第二个参数指定的地址处(在您的情况下为c)。但是c,只有一个字符的空间,并且您输入的字符串scan将至少包含2个字符(您键入的字符和终止于零的字符)。

就您而言,您将获得不确定的行为,这意味着您的程序可能

  • 似乎起作用
  • 每次运行时崩溃
  • 似乎可以与您输入的某个字符串一起使用,而与另一个字符串一起崩溃
  • 或任何其他奇怪的行为

你需要这个:

char c[10];
...
scanf("%9s",c);
...
printf("the ans is %d\n",calc(a,b,c[0]));

它允许您输入长度为9(9个字符+终止零= 10)的字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章