unsigned - みる会図書館


検索対象: プログラミング言語C++
43件見つかりました。

1. プログラミング言語C++

23 型 2.3.1 基本型 65 C + + は , コンピュータの最もよく知られている基本的な記憶領域の単位や , 最もよく見 られる基本的なそれらの使い方に対応した基本型の集合を持っている : は , 符号付きの型を明示的に表す . signed long int signed int signed short int signed char は , 符号なし整数 , 論理値 , ビット配列 , 等を表し , unsxgned 10n9 int unsigned int unsxgned short int unsxgned Char は , 浮動小数点数を表し , long double double f loat は , 異なる大きさの整数を表し , long int int short int char int はデフォルトでは符号付きなので , 符号付きの土 nt 型はそれに対応する修飾のな int を意味する . 一般に , 宣言で型がないと int と仮定される . 例えば : とすことができる . そうすると long は long int を意味し , unsigned は unsigned さらに簡略な記法のために , 意味を変えることなく int を複数の単語の組み合わせから落 signed char' ( 修飾のない ) char は三つの異なる型である . 3.6.1 も見られたい . い int の同義語に過ぎない . signed char だけが関心を引く : unsigned char, const a static x; / / だらしない / / だらしない

2. プログラミング言語C++

13.10 メモリ管理 619 class P001 { struct Link { Link* next ・ const unsxgned Link* head; P001 ( P001 & VOid operator= ▽ 0 土 d grow( 房 public : ( P001 & / / コピー防止 / / コピー防止 P001(unsigned n); ~ P001 ( ) : void* a110C ( void free(void* b); inline ▽ 0 土 d * P001 : : a110C ( ) if (head==0) grow( 房 Link* p = head; head = p—>next ー return p; inline void P001 : : free(void* b) Link* p p—>next head = p; (Link* ) b; head; 上の旦言は p 。 01. h というへッダの中にあるであろう . 下の定義は別の場所にあって定義 を完結させている . コンストラクタは p 。 01 を初期設定しなければならず :

3. プログラミング言語C++

640 r.. 4 標準変換 リファレンスマニュアル さもなければ , どちらかのオペランドが float ならば , もう一方のオペランド も float に変換される . さもなければ , 整数の昇格 ( 4.1 ) が両方のオペランドに対して行われる . 次に , どちらかのオペランドが unsigned long ならば , もう一方のオペラン ドも unsigned long に変換される . さもなければ , どちらかのオペランドが long int で , もう一方のオペランド が unsigned int である士場・合 , long int が unsigned int のすべての値 を表現できるならば , unsigned int は long int に変換され , そうでなけれ ば , 両方のオペランドは unsigned long int に変換される . さもなければ , どちらかのオペランドが long ならば , もう一方のオペランドも long に変換される . さもなければ , どちらかのオペランドが uns 土 gned ならば , もう一方のオペラ ンドも unsigned に変換される . さもなければ , オペランドは両方とも土 nt である . ス可能な基底クラスへのポインタに変換できる ( 1 の . 基底クラスがアクセス可 クラスへのポインタは , 変換が曖昧でなければ ( 10.1 ) , そのクラスのアクセ トを持つならば , void* に変換できる . へ変換できる . 関数へのポインタは , void* がそれを表現するだけの充分なビッ }Fconst かっ非 volat 土 le の任意のオプジェクト型へのポインタは , void* タとも区別可能なポインタを生み出す , ということが保証されている . ばれるポインタに変換される . この値はいかなるオプジェクト又は関数へのポイン ゼロと評価される定数式 ( .5.19 ) は , 一般にヌルポインタ (nullpointer) と呼 したりするところならどこでも , 以下の変換が実行できる : ポインタ ( 82.1 ) を代入したり , 初期設定したり , 比較したり , 又は他に何かで使用 r. 4.6 ポインタ変換

4. プログラミング言語C++

92 第 2 章宣言と定数 ムは純粋に最適化されるが , 移植性を失うことの方がそうでないことよりも多いので , プ ログラマはこれを使う前によく考えるべきである . しばしばより良いアプローチは , デー タを管理するやり方を変えて , 例えば , 動的に割り当てられる記憶領域 ( .2.6 ) にもっと 頼って , あらかじめ割り当てられる静的記憶領域にあまり頼らないようにすることである . 2.6.1 フィールド 二値変数一例えば , オン / オフスイッチーを表現するのに cha てを用いるのは浪費の ように思われるが , char は C + + で独立に領域を割り当てることのできる最小のオプジェ こういったちつばけな変数をいくつか一緒に struct 中の クトである . しかしながら , フィールドとして束ねることが可能である . メンバは , その名前の後にそれが占めるべき ビット数を記述することによりフィールドとなるように定義される . 名前のないフィール ドも許される . これらは名前付きのフィールドの意味に影響しないが , マシンに依存する 何らかの点でより良いレイアウトにするために用いることができる : struct sreg { unsigned unsigned unsigned unsigned unsigned unsigned unsigned int int int int int int int int enable page non resident length C e S S mode / / 末使用 / / 未使用 これはたまたま , DEC PDPI 1 / 45 の状態レジスタ 0 のレイアウトになっている ( フィー ルドは語の中で左から右に割り当てられると仮定している ) . この例はまた , フィールド の他の主な用法も描いている : 外部から強要されるレイアウトの各部分に名前を付けるこ とである . フィールドは , 整数の型 ( 3.6.1 と 9.6 ) でなければならず , フィールドの アドレスを取ることができないことを除けば , 他の整数の型のように用いることができる . オペレーティングシステムのカーネルやデバッガでは , 次のようにして型 sreg を用いる ことができるだろう :

5. プログラミング言語C++

リファレンスマニュアル integer-constant C ん arac r - CO れ S ー 4 れ一 ア 00 れ g - CO れ立 4 れ一 string-literal r. 2.5.1 整数定数 r. 2.5 リテラル 627 数字の列から成る整数定数は , 0 ( 数字のゼロ ) で始まらないならば , 10 進数である . 0 で始まる数字の列は , 8 進数と解釈される . 数字 8 と 9 は , 8 進数の数字ではない . ox もしくは ox で始まる数字の列は , 16 進数である . 16 進数では , 10 進数での 10 から 15 の値を表現するのに , a もしくは A から f もしくは F の英字を使う . 例えば , 12 という 数は , 12 , 014 , もしくは oxc と書ける . 整数定数の型は , その形式 , 値 , 接尾辞により決まる . 接尾辞を持たない 10 進数ならば , その型は , 型 int, long int, unsigned long int の中で , 最初にその値を表現で きる型である . 接尾辞を持たない 8 進又は 16 進数ならば , その型は , 型 int, unsigned int, long int, unsigned 10n9 int の中で , 最初にその値を表現できる型であ る . 接尾辞 u 又は U を持つならば , その型は , 型 unsigned int, unsigned long int の中で , 最初にその値を表現可能なものである . 接尾辞 1 又は L を持つならば , そ の型は , 型 long int, unsigned long int の中で , 最初にその値を表現可能なも のである . 接尾辞 ul , lu, uL, Lu, UI, IU, UL, 又は LU を持つならば , その型は , unsigned long int である . r. 2.5.2 文字定数 文字定数は , , x , のように , 一重引用符で囲まれたーっ以上の文字である . 単一文字の 文字定数 ( 単一文字定数 ) は型 char を持つ . ある単一文字定数の値は , マシンの文字集 合の中におけるその文字の数値である . 多文字定数は型 int を持っ . 多文字定数の値は , 実装依存である . スラッシュ \ は , 以下のエスケープシーケンス表に従って表現可能である : ある種の非グラフィック文字 , 一重引用符 , , 二重引用符 " , 疑問符 ? , それにバック

6. プログラミング言語C++

宣 674 リファレンスマニュアル storage-class-specifier pe - 平 ec 加 食ト平 ec friend typedef decl-specifiers 咽虎 cl - 平 ec 型名となり得る最長の cl - 挈 ec 加の列は , 虎 c ra 加れ ( 宣言 ) の decl-specifiers とし て取り扱う . この列は , 以下に述べるように , 自分自身に対して矛盾していてはならない . 例えば , typedef char* Pc ー static Pc ー / / 工ラー : 名前がない こで , static pc という宣言は , 型 pc の静的変数について何も名前が指定されてい ないので違法である . 型 int の pc という変数を得るためには , pc という〃手襯 e ⑩イイ名 ) が ( 再 ) 宣言しようとしている名前であって cl - 平 ec 加列の一部ではない ということを指示するような type-specifier ( 型指定子 ) int が存在しなくてはならない . 例えば , / / void f ( char*const ) / / void g(const int) signed, unsigned, long, short は , デフォルトで int を : 意味するので , これ らの指定子のどれかーっの後に現れるイ手襯 e は , ( 再 ) 宣言しようとしている名前で なければならない点に注意されたい . 例えば , void h (unsigned Pc void k (unsigned int Pc void f(const (C) : ▽ 0 土 d g(const int (C) ー / / void h(unsigned int) / / void k(unsigned int) r. 7.1.1 記憶クラス指定子 記憶クラス指定子 (storage class specifier) には , 次のものがある .

7. プログラミング言語C++

636 r. 3 基本概念 リファレンスマニュアル の値はその文字の整数コードと同値になる . 文字を unsigned 又は signed と明示的に 宣言しても構わない . 修飾のない char, signed char, unsigned char は , 異な る三つの型である . char, signed char, unsigned char は , 同じ量のスペース を消費する . short int, int, long int として宣言される三種類のサイズの整数が利用可能 である . より長い整数は , より短い整数に比べて , 同じか , それ以上の記憶領域を与える . しかし , 実装では , 短い整数と長い整数のどちらか , もしくは両方を , 修飾のない整数と 同値としても構わない . 修飾のない整数は , マシンアーキテクチャによって提案される自 然なサイズを持つ . 他のサイズのものは , 特別の必要生に対処するために提供される . 型 signed char, short, int, long のそれぞれに対して , 対応する unsigned 型が存在する . それは , 同じ記憶量を占め , 同じ境界合わせ要求を持っ . 境界合わせ要求 (alignment requirement) とは , ある与えられた型のオプジェクトへのポインタ値に対す る実装依存の制限のことである ( 5.4 ) . unsigned と宣言された符号なし整数は , その内部表現のビット数がれである場合 , 2 れを法とした剰余になる . したがって , 符号なしの算術にはあふれは存在しない . 浮動小数点数 (floating) 型としては , float, double, 10n9 double の三つがあ る . 型 double は , float と同じか , それ以上の精度を与え , 型 long double は , double と同じか , それ以上の精度を与える . 実装では , 標準ヘッダ <float . h > にお いて , 基本的な浮動小数点型の特を定義する . 型 char, すべてのサイズの int, それに列挙 ( 7.2 ) は , 総称して整数の (integral) 型と呼ばれる . 整数の型と浮動小数点数 (floating) 型は , 総称して算術 (arithmetic) 型 と呼ばれる . v 。 id 型は値の空集合を指定する . これは , 値を戻さない関数の戻り値として使われる . オプジェクトを型 vo 土 d のオプジェクトとして宣言してはならない . 式は , 型 vo 土 d に明 示的に変換してもよい ( 5.4 ). この結果の式は , 式文 (expression statement) ( 6.2 ) , コンマ式 ( 5.18 ) の左のオペランド , 又は ? : ( 5.16 ) の第 2 又は第 3 のオペランド としてのみ使用できる . r. 3.6.2 派生型 次のようにして基本型から概念的には無限の派生型が構築できる : 与えられた型のオプジェクトの配列 (arrays) , 阯 8.2.4 ;

8. プログラミング言語C++

66 第 2 章宣言と定数 各々は int 型のオプジェクトを定義する . 宣言から型指定を除いたままでデフォルトの int に頼るのは一般に悪い趣味であり , 望ましくない微妙さにつながりかねない . 7.1 を見られたい . 整数型 char は , 与えられたコンピュータ上で文字を保持し処理するのに最も適した型 である . 普通は 1 バイトであり , 1 バイト当たり 8 ビットである . C + + オプジェクトのサイ ズは char のサイズの整数倍で表されるので , 定義により sizeof(char) 三 1 である . ハードウェアに依存して , char は符号付き整数か符号なし整数になる . 型 unsigned char はもちろん常に符号なしであるので , これを使えばより移植性の高いプログラムに なるが , 修飾なしの char を用いる代わりにこれを用いるとかなり実行速度が遅くなるこ とがある . 同様に型 signed char は常に符号付きである . 二つ以上の整数型 , 二つ以上の符号なし型 , 二つ以上の浮動小数点型を提供する理由は , プログラマがハードウェアの特陸を利用できるようにするためである . 多くのマシンでは , 様々な基本型の間で , メモリ要求 , メモリアクセス時間 , 計算速度などにかなりの違いが ある . マシンを知っていれば , 例えば特定の変数にふさわしい整数の型を選択することは 普通容易である . 本当に移植性のある低レベルのコードを書くのはもっと難しい . 基本型 の大きさについて保証できるのは次のことである : 7 三豆記可 ( c ん ) 豆記可 ( or り豆 ze 可 ( ⅲり豆可 ( / 0 れ g ) 豆 zeo. / 伊 0 砒 ) 豆可 ( イ 0 ″わ豆可 ( / 0 れ g ″わ 豆託可 ( り三 s た e 可 ( 豆 g れ翻り三豆可 ( ″れ豆 g れ e イり こで工は char, short, int, long のいすれでもよい . これに加え , char は少な くとも 8 ビット , short は少なくとも 16 ビット , 1 。 ng は少なくとも 32 ビットを持っ ことが保証されている . char はマシンの文字集合のうち一文字を格納できる . これは , char が 0 .. 127 の範囲の整数を保持できることを仮定しても普通安全である , というこ とを意味する . これ以上のことを仮定するのは冒険である . unsigned 整数型は , 記憶領域をビット酉 IJ として扱う用法にとって理想的である . 正 整数を表現するためのもう 1 ビットを得るために int の代わりに uns 土 gned 整数型を用 いるのは , たいてい決して良い考えではない . 変数を unsigned と宣言することにより ある値が正であることを保証しようする試みは甬 , 暗黙の型変換規則により覆されるだ unsigned surprise ろう . 例えば :

9. プログラミング言語C++

88 「 .16 前処理 リファレンスマニュアル 値を持つ指令が見つかった場合 , 後続の #elif や #else は , それらに関連するテキス ト ( C + + 式やプリプロセッサ指令 ) と一緒に無視される . 成功した指令に関連するテキス ト ( 定数式が非ゼロでないものの最初の指令 ) は , 前処理され , 普通にコンバイルされる . #if 及びすべての # el 土 f に関連する式がゼロと評価されたなら , #else ( もしあれば ) に関連するテキストが普通に扱われる . #if 及び # el 土 f の co れ立 0 厩 - 2 尾 s ⅵ 0 れ ( 定数式 ) の中では , 単項演算子 defined を形式 defined e 加加 もしくは defined ( e 厩“ ) で使用できる . 識別子に適用された場合 , その識別子が #define 指令で定義され , かっ , その後で #undef を使って未定義にされていないなら , その値は 1 である . そうでなけれ ば , その値は 0 である . 識別子 defined 自身を , 末定義したり , 再定義したりしてはな らない . あらゆる defined 演算子が評価された後で , 定数式に現れ , 残っているプリプロセッ サマクロが , 16.3 で述べるように置換される . その結果の式は , 型 int と unsigned int が , それそれ long と unsigned long として扱われることを除けば , 5.19 で 定義したように , 整数定数式でなければならない . そして , それには , キャスト , sizeof 演算子 , 及び列挙定数が含まれてはならない . 形式 #ifdef e 厩加 の制御行は , 以下のものと同値である . #if defined e 厩加 形式 #ifndef e 厩げ

10. プログラミング言語C++

リファレンスマニュアル r ユ 1 指定子 681 ラに対するヒントである . volatile 配列の各要素は volatile であり , volatile クラスオプジェクトの関数でない非静的メンバはそれそれ volat 土 le である ( .9.3.1 ). 宣言から pe - 挈 ec 加げが省略されている場合 , それは int として扱われる . CO 襯をた - c - 〃住襯 e 9 ″記加 e イ - 〃 e - れ襯 e char short int long signed unsigned float double void long 及び short という単語のうち高々ーっを , int と一緒に指定してもよい . どち らかが単独で現れてもよいが , その場合は int があると考える . long という単語は , double と一緒に現れてもよい . signed 及び unsigned という単語のうち高々ーっ を , char, short, int, 又は long と一緒に指定してもよい . また , どちらかが単独 で現れてもよいが , その場合は int があると考える . signed 指定子は , char オプジェ クトとビットフィールドを符号付きにするように強制する . この指定子は , 他の整数型に 対しては冗長である . c - 挈 ec 加 ( クラス指定子 ) と e 川 - 挈 ec 加 ( 列挙指定子 ) は , それぞれ阯 9 と 7.2 において議論する . ela わ 0 川 ted- ア←平 ec : c - た c - れ住襯 e c - た e れ唖げ enum. e れ〃′れ - れ′れ e CIass struct unxon