小编inf*_*ite的帖子

即使没有声明也使用全局定义

在这段代码中:

#include<stdio.h>

int var=100;

int main()
{
    extern int var;        //Declaration not Definition
    printf("%d\n",var);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

100被印刷,其是什么不正常的,但是,当声明从除去main()中,即使在当时正在使用全局定义.这是怎么回事?这取自K&R,其中说:

还必须在每个想要访问它的函数中声明(全局)变量.

c scope global-variables extern

2
推荐指数
1
解决办法
67
查看次数

关于全球空间的默认返回类型的说明

在创建函数时atof,我将整个工作分成两个单独的转换单元:


MC

  #include<stdio.h>

  extern  fun(char[]);  //return type not mentioned on purpose


  int main()
  {
     printf("%d\n",fun("+123.980")); //%f would also display 0.000000
     return 0;
  }
Run Code Online (Sandbox Code Playgroud)

NC

   #include<ctype.h>

   float fun(char c[])
   {
       float val=0, pow=1;
       int i;
       int sign;

       for(i=0;isspace(c[i]);i++); //SKIPPING WHITESPACE IF ANY

       if(c[i]=='+')
           sign = 1;
       if(c[i]=='-')
           sign =-1;
       ++i;

       for(;c[i]!='.';i++)
           val = val*10 + (c[i]-'0');
       ++i;

       while(isdigit(c[i]))
       {
            val = val*10 + (c[i]-'0');
            pow=pow*10;
            ++i;
       }

       return sign*val/pow;   
   }
Run Code Online (Sandbox Code Playgroud)

警告说int在这种情况下函数的类型将默认为,因为全局空间中的每个变量/函数类型都没有明确提到任何返回类型,默认为int.

我期待输出int版本为+123.980,即仅123 …

c

0
推荐指数
1
解决办法
61
查看次数

标签 统计

c ×2

extern ×1

global-variables ×1

scope ×1