2013-03-29 9 views
12

ストレージクラス識別子の自動使用のケース?すべてのローカル変数がデフォルトで自動であることを理解しています。しかし、明示的な自動intを書くことによって違いは何ですか?ローカル変数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"は "staticではない"という意味で、デフォルトです。それは前任者Bの影響が大きかった。http://en.wikipedia.org/wiki/B_(programming_language) –

+0

リンクを共有してくれてありがとう。 – vkesh

2

2の可能な場合があります。

  1. autoはデフォルトであり、明示的にキーワードを追加すると(グローバル変数の上など、)
  2. autoが許可されていない何もする場合は、auto防止を追加することを実現していませんコンパイルコード
+0

2番目の可能なケースでは、グローバル変数をautoに追加すると、グローバル変数が定義されないのですか?もしあなたが何かを知っているなら、ユースケースは何ですか? – vkesh

+1

@vkesh:グローバル変数に 'auto'を指定しようとすると、コードはコンパイルされません(とにかく適切に機能するコンパイラで)。 「ユースケースは何ですか?」という限りでは、私の指摘はないということです。 –

+0

ありがとうございました。 – vkesh

2

現代C(C89、C99、C11)では、autoキーワードは冗長です。インテントを明示的にする以外(「これは非静的変数であり、私はそれを意味する」)、それはもはや目的を果たさない。それはBから引き継がれたCの歴史の残り物ですが、entryのようなキーワードは実際には時代遅れになっています。

私は一度それを私の人生で使った。これは、暗黙のint型と併せてIOCCCエントリにあった:[?Cのautoキーワードが使用されている場合]

drive() { auto motive; ... } 
関連する問題