2013-03-29 212 views
12

存储类标识符auto的用例我知道所有的局部变量默认都是自动的。但是,通过写明确的自动int a有什么区别?局部变量auto int a和int a有什么区别?

+0

的可能的复制(http://stackoverflow.com/questions/2192547/where-is-the- c-auto-keyword-used) –

回答

11

完全没有区别。

{ 
    auto int a; 
    /* ... */ 
} 

{ 
    int a; 
    /* ... */ 
} 

是等价的。

通常的做法是不要把auto说明符。

+0

我可以在每个地方找到它,这意味着auto关键字没有特殊意义。 – vkesh

+1

@vkesh这对C来说是正确的。“'auto'”的意思是“not'static'”,这是默认值。它在其前身B. http://en.wikipedia.org/wiki/B_(programming_language) –

+0

有更多的影响力,非常感谢分享链接。 – vkesh

2

有两种可能的情况:

  1. auto是默认的,并明确添加关键字无所作为
  2. auto是不允许的(例如,在一个全局变量),在这种情况下添加auto防止来自编译的代码
+0

你的意思是由第二种可能的情况,如果我们将自动添加到全局变量防止全局变量被定义??如果是的话,如果你知道什么是什么用例? – vkesh

+1

@vkesh:我在说,如果你试图为一个全局变量指定'auto',那么代码将不能编译(无论如何,编译器运行正常)。至于“什么是用例”,我的观点是没有。 –

+0

非常感谢您的澄清。 – vkesh

2

在现代C(C89,C99,C11)中,auto关键字是多余的。除了明确的意图(“这是一个非静态变量,我的意思是!”),它不再有任何目的。这是C历史的遗留物,从B转移过来,但很像entry关键字几乎已经过时。

我在我的生活中曾经使用过它。这是与隐式int类型的结合进入IOCCC:在哪里?用C auto关键字]

drive() { auto motive; ... } 
相关问题