アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

以上、宜しく御願い致します。

A 回答 (3件)

一般論でいえば、long long型を利用できるのは、C99(ISO/IEC 9899:1999)に準拠した処理系だけです。

C++でも利用することができません。
ただし、処理系の独自拡張でlong long型がサポートされていることもあります。

質問者さんの使っている処理系が何か分かりませんが、C99に準拠していなかったか、C++を使おうとしたかのどちらかでしょう。

ちなみに、C99では64ビット整数があるのではなく、64ビット以上をもつlong long型があるというだけです。long long型が72ビットや128ビットであっても規格には合致しています。
    • good
    • 0

★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 型のフォーマット指定子』
・以上。
    • good
    • 0

貴方が使用しているコンパイラーは何ですか?


使っている環境(OS、コンパイラ、バージョン)によって
サポートしていないのがあります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!