• ベストアンサー

long long型について

long long型を使用したいのですが、 コンパイルすると『未サポート』の警告がでます。 long long型を使ううえで制約等あるのでしょうか? 以上、宜しく御願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

一般論でいえば、long long型を利用できるのは、C99(ISO/IEC 9899:1999)に準拠した処理系だけです。C++でも利用することができません。 ただし、処理系の独自拡張でlong long型がサポートされていることもあります。 質問者さんの使っている処理系が何か分かりませんが、C99に準拠していなかったか、C++を使おうとしたかのどちらかでしょう。 ちなみに、C99では64ビット整数があるのではなく、64ビット以上をもつlong long型があるというだけです。long long型が72ビットや128ビットであっても規格には合致しています。

その他の回答 (2)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★C99 の規格上では 64 ビット整数があります。 ・でも処理系(コンパイラ)によって利用可能、不可能があります。  例えば VC6 は使用不可能、VC++2003 から使用可能。  VC++2003、VC++2005 の両方で『long long』型は利用できますが printf などの  書式指定の文字列が異なります。VC++2003 では『%I64d』『%I64u』ですが  VC++2005 では『%lld』『%llu』となります。 ・また VC 系には次の型が用意されています。  『__int64』  『LONGLONG』『ULONGLONG』『DWORDLONG』  『LARGE_INTEGER』  どれも 64 ビットを扱う型のようです。 ・Windows 環境によってはサポートされていない VC6 でも『LONGLONG』『ULONGLONG』  などの型が擬似的に利用できるようです。多分は 64 ビット整数の演算をエミュレート  しているものと推測します。なので正式な 64 ビット整数『long long』型よりも演算が  低速です。 ・まずは処理系(コンパイラの種類)を確認して下さい。  過去に似たような質問がありましたので参考にして下さい。  http://oshiete1.goo.ne.jp/qa2739902.html→『VC6でlong longでエラー?』  http://oshiete1.goo.ne.jp/qa3111328.html→『unsigned long long 型のフォーマット指定子』 ・以上。

回答No.1

貴方が使用しているコンパイラーは何ですか? 使っている環境(OS、コンパイラ、バージョン)によって サポートしていないのがあります。