教えていただきたいのですが、変数の型にlong longやunsigned long long
なるものがあると聞いたのですが、どのようなものでしょうか?
また、どのように宣言するのでしょうか?通常のlongなどと同じ要領で宣言し
てやれば良いのでしょうか?
もし、この型がある場合に、制約はあるのでしょうか?Unixでしか使えないとか
の制約等ありましたらぜひ教えてください。
お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

long longはANSI-Cの新しい改訂版C99で正式に採用されました。


C99以前のANSI-C対応処理系では独自拡張(gccなど)です。
環境の指定が無いので独自拡張は無視してANS-C99について解答します。

long longまたはlong long int=64ビット符号付き整数
unsigned long longまたはunsigned long long int=64ビット符号無し整数

定数の場合はLL(=long long)またはLLU(=unsigned long long)を付加する。
LL,LLU小文字でもよい。
1LL,0LL,100000000000lluなど

long long系の整数使うライブラリ関数について
・printf/scanf系書式の追加
%lld(=long long) および%llu(=unsigned long long)
・その他ライブラリ関数
文字列整数化:strtollが用意される。

現状では日本語で読めるC99の包括的な資料は存在しません。
英語版で良ければC99のドラフトが参考URLで読むことができます。

参考URL:http://anubis.dkuug.dk/JTC1/SC22/WG14/
    • good
    • 1

long long も unsigned long long も新しく追加された型です。


long long:64bit -9223372036854775808~9223372036854775807
unsigned long long:64bit 0~18446744073709551615
という型で64bitであること以外は他の型とshortやlongなどと同じように演算に使用できます。
ただし、新しい型ですので、従来のコンパイラでは対応していない場合が考えられます。

この回答への補足

ありがとうございます。
longやshortと同じ用に使用できると言う事ですが、printfなどを使用して
表示したり、sprintfなどを使用する場合はどのようにしたら良いでしょうか?
書式制御文字が分かりません。
あと、atol()やltoa()などの関数を使用する場合などでは、ライブラリなど
新しいものが要るのでしょうか?

補足日時:2001/03/27 12:00
    • good
    • 1

こんにちは.


下記のサイトを参考にすると,よくわかると思います.
unsignedとは正の整数ということです.

参考URL:http://www.geocities.co.jp/SiliconValley/1002/c9 …
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速確認します。
いろいろと勉強してきます。

お礼日時:2001/03/27 15:05

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJSP/サーブレットって言語なんですか?

一言なんですが、
JSP/サーブレットって言語なんですか?

Aベストアンサー

---Insider's Computer Dictionaryより引用----------
サーブレット:
Webサーバ上で実行される、Javaのプログラムモジュールのこと。Javaアプレットがクライアント側で実行されるのに対し、Javaサーブレットはサーバ側で実行されるという違いがある。Javaサーブレットと似た機能としてCGIというものもある。しかしCGIはWebブラウザからの要求に応じて、その都度起動され実行される独立したプログラムモジュールであるのに対し、Javaサーブレットは、Webサーバプロセス中のスレッドとして実現されている。そのため、サーブレット自身でステート(状態)を持った処理を行うことができるし、(いちいち外部プロセスを起動しないので)要求に対する応答も素早く、Javaなのでプラットフォームにも依存しない、という特徴がある。
---Insider's Computer Dictionaryより引用----------

JSPとは「Java Server Pages」の略で、HTMLの中に埋め込めるJavaというような感じです。
JSPは最初のリクエスト時にコンパイル(ページ・コンパイル)されて、サーバーにjavaファイルと(javaファイルをコンパイルした)クラスファイルが生成されます。
生成されたjavaファイルとクラスファイルが実はサーブレット(を継承したクラス)で、このサーブレットの中で最終的にブラウザで表示されるHTMLを返しています。

JSPはサーブレットなので、サーブレットできることはJSPでも出来ますが、現在はMVCモデルに沿ってデザインするのが主流です。
MVCモデルについて細かくは説明しませんが、MVCモデルでは
サーブレット:BeanやJSPをコントロールする
JSP:ブラウザに表示する部分を担当
というような感じです。

これから勉強するのであれば、
1.サーブレットがサーバーでどのように動いているか
をきちんと勉強し、
2.HTMLを返すだけのシンプルなサーブレット
3.JSP
4.サーブレットとJSPの連携
5.Strutsなどのフレームワークの使用
とステップアップしていくのがいいと思います。

---Insider's Computer Dictionaryより引用----------
サーブレット:
Webサーバ上で実行される、Javaのプログラムモジュールのこと。Javaアプレットがクライアント側で実行されるのに対し、Javaサーブレットはサーバ側で実行されるという違いがある。Javaサーブレットと似た機能としてCGIというものもある。しかしCGIはWebブラウザからの要求に応じて、その都度起動され実行される独立したプログラムモジュールであるのに対し、Javaサーブレットは、Webサーバプロセス中のスレッドとして実現されている。そのた...続きを読む

Qunsigned long long 型のフォーマット指定子

unsigned long long 型の変数の値を表示したいのですが、
フォーマット指定子は%ldですか?
よろしくおねがいします。

Aベストアンサー

規格上は、%llu のように ll を付けます。(unsigned long longなので、%lld ではなく %llu です。)
ただし、C99に準拠した処理系ではなく、単に独自拡張としてlong long型をサポートしている場合には、%Lu とか %qu とかになる場合もあります。場合によっては、long long型が存在する処理系でも、printf系関数で正しく書式化する方法が存在しないこともあり得ます。

QJAVA言語,JSPによるクイズシステム(環境エクリプス5.5)(問題文はテキストで作成)

環境エクリプス5.5。JAVA言語を使いJSPでクイズプログラムを作ることになりました。流れは、いくつかの選択ボタンがあり、押したら問題が1問出て、4択式の中からクリック式で選び、正解だったら正解ページに行き、間違いだったら不正解ページに行きますが解説は正解も不正解も一緒です。その正解、不正解ページにある「次の問題」というボタンを押したら次の問題をだします。問題は10問です。MVCアーキテクチャーの概念にそって、サーブレット、モデル、ビューで作っていきます。問題をテキストにつくりたいのですが、先ほどの説明画面のようにするには、テキストでどのように作っておけばよいのか?わかりません。テキストはモデルクラスで呼ぶのですが、そのクラスでどのような定義をしたら呼べるのか?どのようにしあたら、問題、回答4つ、解説をわけることができるか?。お願いします。どなたか教えていただけませんか?できなくてとても困っています。

Aベストアンサー

RDBMSを利用可能なら、そちらの方がいいです。

利用不可でしたら、CSV(カンマ区切り)かTSV(TAB区切り)形式で十分でしょう。1行に1問を書き、左から、問題文、回答番号、回答1、回答2、回答3、回答4、の6カラムをカンマかTABで区切ります。

【例】
Javaの宿題ができない。どうする?,1,自力でやる,教えてgoo,Google,諦める
日本の首都は?,3,ニューヨーク,ロンドン,東京,モスクワ

Qunsigned long 'aufx' から C Strings "aufx" への方法

unsigned long の値が例えば'aufx'が入っていたとして
その値を元にC Stringsの"aufx" もしくは NSString の @"aufx"を作りたいのですがどのようにしたらよいでしょう。
目的はNSDictionary の key にしたいのですが

//includeされています
//typedef unsigned long FourCharCode;
//typedef FourCharCode OSType;


OSType osType;
osType = kAudioUnitType_Effect; //'aufx' 61756678
char no1;
char no2;
char no3;
char no4;
char osTypeStrings[5];

no1 = (osType>>24)|(osType<<8);
no2 = (osType>>16)|(osType<<16);
no3 = (osType>>8)|(osType<<24);
no4 = osType;

osTypeStrings[0] = no1;//'a'
osTypeStrings[1] = no2;//'u'
osTypeStrings[2] = no3;//'f'
osTypeStrings[3] = no4;//'x'
osTypeStrings[4] = '?0';


のようにしてもうまくいかず
いろいろ試したのですがうまくいかないのですが
どのようにすればベストですか?
もっと簡潔な方法もありますか?
解る方、すみませんがよろしくお願いします。

unsigned long の値が例えば'aufx'が入っていたとして
その値を元にC Stringsの"aufx" もしくは NSString の @"aufx"を作りたいのですがどのようにしたらよいでしょう。
目的はNSDictionary の key にしたいのですが

//includeされています
//typedef unsigned long FourCharCode;
//typedef FourCharCode OSType;


OSType osType;
osType = kAudioUnitType_Effect; //'aufx' 61756678
char no1;
char no2;
char no3;
char no4;
char osTypeStrings[5];
...続きを読む

Aベストアンサー

unsigned long x=0x61756678;
char s[5];
unsigned char mask=0xff;
s[0] = (x>>24)&mask;
s[1] = (x>>16)&mask;
s[2] = (x>> 8)&mask;
s[3] = x&mask;
s[4] = '\0';
とかでどうでしょうか。

Qホームページを作成する際に良い言語

以前JSPで作っていたのですが、PHPとかでもいいのかとおも思っています。
データベースなどが必要なサイトで皆さんならどの言語がいいですか?私はプログラマーではないのでいいなりなのですが、jspは検索に引っかかりにくい言語みたいだし、 なにか良い言語があったら理由も含めて教えてください
よろしくおねがいします。

Aベストアンサー

jspが検索にひっかかりにくいってのは単に検索の仕方の問題では?
jspはjavaの構文がそのまま使えるので、
ネットの情報量としては一番多いかと思います。

Qlong long型について

以前、下記質問をさせてもらいました。
http://okwave.jp/qa3407843.html

回答して頂いた内容では、
コンパイラによって利用可能、不可能とのことですが、
コンパイラの種類とはどう確認すればよいのでしょうか?
※無知で申し訳ありません。

また32ビットOS、64ビットOSとかはまったく関係ないのでしょうか?

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

Aベストアンサー

> コンパイラの種類とはどう確認すればよいのでしょうか?

#include <stdio.h>

int
main(void)
{
printf("long long:\t%d byte\n", sizeof(long long));
printf("long:\t%d byte\n", sizeof(long));
printf("int:\t%d byte\n", sizeof(int));
printf("long double:\t%d byte\n", sizeof(long double));
printf("double:\t%d byte\n", sizeof(double));
printf("float:\t%d byte\n", sizeof(float));
return 0;
}
をコンパイルしてみればよいと思います。

> また32ビットOS、64ビットOSとかはまったく関係ないのでしょうか?

OSとは直接は無関係ですが、64 bit OSは、64 bit CPUに載せます。
intは、8byteにするのが効率が良く、sizeof(int) = sizeof(long long)と実装することになるでしょう。

> コンパイラの種類とはどう確認すればよいのでしょうか?

#include <stdio.h>

int
main(void)
{
printf("long long:\t%d byte\n", sizeof(long long));
printf("long:\t%d byte\n", sizeof(long));
printf("int:\t%d byte\n", sizeof(int));
printf("long double:\t%d byte\n", sizeof(long double));
printf("double:\t%d byte\n", sizeof(double));
printf("float:\t%d byte\n", sizeof(float));
return 0;
}
をコンパイルしてみればよいと思います。

> また3...続きを読む

QJSPからJSPへ情報を渡せる?

JAVA言語 JSPからの質問がございます。

JSPからJSPへと飛ばすときに、例えば

 a.jspがありそのjspには変数Aと変数Bと変数Cがあります。
リンクをおした時点で条件をつけてA==4
なら、b.jspへ飛びその際変数Bをb.jspにわたす。
 もしノットイコールならc.jspへ飛び、その際変数Cをc.jspにわたす。

なんていうことができるのでしょうか?
もしできるようでしたら、お手数ですが例を打っていただけませんでしょうか?宜しくお願いいたします。

Aベストアンサー

こんにちわ。
仰っているのは、Aの値に応じてリンク先が変わり、且つ、値を遷移先のJSPに渡したいということですよね?

でしたら遷移先については、
<% if (A == 4) { %>
<a href="b.jsp">リンク</a>
<% } else { %>
<a href="c.jsp">リンク</a>
<% } %>
のようにAの値によってリンク先を変更して表示すれば良いと思われます。

あとは、値の渡し方ですが、方法は複数あるように思います。
一つは、セッションを使う方法。もう一つはURLにパラメータとしてつける方法。他にもあるかもしれません。

前者はセッションスコープに値を設定するのが一般的と思われます。
request.getSession().setAttribute("B", "Bの値");
で格納し、遷移先のJSPで
request.getSession().getAttribute("B");
で取り出せます。

後者は、aタグのhrefに「b.jsp?B=3」とかにして、
request.getParameter("B");
で取り出せると思います。

「java セッション」とかで検索するとセッションに入れたオブジェクトの有効範囲(スコープ)などを解説してくれているサイトが見つかるはずです。

参考になれば幸いです。

こんにちわ。
仰っているのは、Aの値に応じてリンク先が変わり、且つ、値を遷移先のJSPに渡したいということですよね?

でしたら遷移先については、
<% if (A == 4) { %>
<a href="b.jsp">リンク</a>
<% } else { %>
<a href="c.jsp">リンク</a>
<% } %>
のようにAの値によってリンク先を変更して表示すれば良いと思われます。

あとは、値の渡し方ですが、方法は複数あるように思います。
一つは、セッションを使う方法。もう一つはURLにパラメータとしてつける方法。他にもあるかもしれません。

...続きを読む

QC言語signed long long型の演算

C言語で以下の演算を行った場合、変数bに格納される値が-1(0xFFFFFFFFFFFFFFFF)になることを期待しておりましたが、参照すると4294967295(0x00000000FFFFFFFF)となってしまいます。

unsigned int a = 1;
signed long long b;

b = a * (-1);

32bit、64bitのUNIX(Solaris)マシンでそれぞれ確認しましたが、どちらも同じ結果となりました。
変数aの型宣言をsigned intにすると変数bが-1(0xFFFFFFFFFFFFFFFF)になることは確認したのですが、unsigned intだとなぜこのような演算結果となるのかが分かりません。
※8バイト整数に格納する際に先頭4バイトがなぜ0xFFFFFFFFで補完されないのか?

ちなみに変数bの型宣言をsigned long intにすると32bitマシンでは-1となりましたが、64bitマシンでは4294967295となってしまいます。
これは32bitUNIXマシンではsigned long intは4バイト領域であるため-1(0xFFFFFFFF)となり、64bitUNIXマシンでは8バイト領域のため前述と同じ結果になるのだと考えますが、なぜ8バイト整数を使用するとこのような演算が行われるのかが分からないので、演算順序や型変換の優先順位がどのように行われいるのか説明できる方教えてください。

C言語で以下の演算を行った場合、変数bに格納される値が-1(0xFFFFFFFFFFFFFFFF)になることを期待しておりましたが、参照すると4294967295(0x00000000FFFFFFFF)となってしまいます。

unsigned int a = 1;
signed long long b;

b = a * (-1);

32bit、64bitのUNIX(Solaris)マシンでそれぞれ確認しましたが、どちらも同じ結果となりました。
変数aの型宣言をsigned intにすると変数bが-1(0xFFFFFFFFFFFFFFFF)になることは確認したのですが、unsigned intだとなぜこのような演算結果となるのかが分かりま...続きを読む

Aベストアンサー

unsigned int の 1 と int の -1 を掛けるので
1. int の -1 を unsigned int に変換する. その結果は 42....
2. unsigned int の 1 と上で得られた値を掛ける. もちろん結果は 42....
んで, その結果を signed long long に入れるので (値が保存されて) 42....

ということでは.

QJSP・サーブレットとphpどちらがいい?

質問1:どちらがおすすめですか?またこのどちらかじゃなくてもいいので、webサイト構築にお勧めの言語をご教示ください

質問2:jspやサーブレットでfacebookやmixiやok waveみたいなサイトを構築できますか?

質問3:スマートフォン向けのサイトの構築でもjspやサーブレットは使えますか?

Aベストアンサー

こんにちは。


1)環境も含め簡単に作るのであればPHPがお勧めです。
Webに特化していますし。

2)もちろん出来ます。

3)もちろん出来ます。
最終的にクライアントに返るのはどんな言語を使っても同じです。(HTMLやCSS等)

Qunsigned int型と int型の型変換の上位性

if(-10<1u)の条件判定はunsigned型で評価され偽となります。
int型 unsigned int型とも32ビットで考えたとき、
1u = 0x00000001 -10 = 0xfffffff6で10進法では4294967286になります。
条件判定をunsigned型で考えれば確かに-10<1uは偽になり
int型で考えれば-10<1uは真になります。
「通常の算術変換」によれば、「一方のオペランドがunsigned int型をもつ時、他のオペランドをunsigned int型に型変換するとあります。」
よって、if(-10<1u)の条件判定はunsigned型で評価され偽となりますが、
「一方のオペランドがint型をもつ時、他のオペランドをint型に型変換する。」では何故いけないのでしょうか?
宜しく願います。

Aベストアンサー

> <符号無し整数型から符号付き整数型に変換する際、元の値が表現できなければ、>
> とは、具体的にどのような場合をいうのでしょうか?

例えば、

unsigned int a = UINT_MAX;
int b = (int)a;

とした場合、aの値はUINT_MAXであり、int型の表現範囲に収まりません。
具体的には、int型が32ビットで負値を2の補数で表現する処理系であれば、int型の表現範囲は-2147483648~+2147483647になりますから、UINT_MAXの値(4294967295)を表現することができません。

> <処理系定義の値になるか処理系定義のシグナルが発生します。>

int型の負値の表現方法は、2の補数以外に、1の補数や符号ビット+絶対値が考えられます。これらの場合にUINT_MAXをint型にキャストするとどんな値になるか考えてみてください。
処理系定義のシグナルというのは、例えばオーバーフロー例外(プロセッサがハード的に発生させる割り込みのようなものと考えてください)が発生して、結果として何らかのシグナルハンドラが呼び出されるかもしれないことを意味しています(シグナルハンドラについてはsignal関数を調べてください)。

> <符号無し整数型から符号付き整数型に変換する際、元の値が表現できなければ、>
> とは、具体的にどのような場合をいうのでしょうか?

例えば、

unsigned int a = UINT_MAX;
int b = (int)a;

とした場合、aの値はUINT_MAXであり、int型の表現範囲に収まりません。
具体的には、int型が32ビットで負値を2の補数で表現する処理系であれば、int型の表現範囲は-2147483648~+2147483647になりますから、UINT_MAXの値(4294967295)を表現することができません。

> <処理系定義の値になるか処理系定義...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング