- ベストアンサー
long long型について
long long型を使用したいのですが、 コンパイルすると『未サポート』の警告がでます。 long long型を使ううえで制約等あるのでしょうか? 以上、宜しく御願い致します。
- みんなの回答 (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)
★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 型のフォーマット指定子』 ・以上。
- memphis140
- ベストアンサー率34% (100/288)
貴方が使用しているコンパイラーは何ですか? 使っている環境(OS、コンパイラ、バージョン)によって サポートしていないのがあります。