
No.4ベストアンサー
- 回答日時:
unsigned short などのような構文はありませんが、とりあえず負の値を使いたくないのなら char型を数値のように使えばよろしいかと思います。
char型のとりうる範囲は0~65535で、範囲外の数値はint型とみなされます(数値を直接代入する場合のみ)。
ただし負のintをcharにキャストすると上位ビットが欠落します。
char c;
c = 0;
c = 65535;
c = 65536; ←コンパイルエラー
c = -1; ←コンパイルエラー
c = (char)-1; ←コンパイルエラーにはならないが65535になる
対策方法を教えてくださってありがとうございました。
char型を使うのは全く考えていなかったのでとても参考になりました。
おかげで無事解決できました。
ありがとうございました。
No.3
- 回答日時:
げ。
。MAX 255って書いてるし。。。Orz今まで私が作った過去のソースをあさってみたら、
基本的にはint で 0 から 65535 を使うようにしてあるんですが、
処理中で、0なら-32768 として処理する(32768のゲタをはかせる)ようにしたものもありました。
独自にUnsignedShortクラスを作ってますね。
きっと、最初の頃のソースなので、いろいろやってみたかったんでしょう(笑)<他人事か
>独自にUnsignedShortクラスを作ってますね。
別途にクラスを作るとは考えもしていなかったので眼からウロコでした。
そこまで今回は手間をかけたくない部分でしたので今後の参考にさせていただきます。
ご回答ありがとうございました。
No.2
- 回答日時:
signedとunsignedの比較はバグを生む原因になりますし
例えばキャストについても
unsigned short a = 65535;
short b = (short)a;
これをC/C++言語でやると普通bが-1になりますが、
2の補数とビットについて理解していなければ
何故そうなるのかわからないでしょう。
Javaはそもそもプラットフォーム間の差を無くす事と
複雑なC++を簡素化する事が設計の思想になっていたと思います。
処理系が必ず2の補数を使っているとも限らないわけですから
unsignedを認めない設計になったのだと思います。
(認めると処理系が変わる事で結果が変わる可能性がでてくるので。)
既にある回答と被りますが
shortではなくintを使い
0~65535であることをチェックするしかないでしょう。
Javaの設計思想からご丁寧に教えてくださってありがとうございました。
ビットについては少し学んだのでbが-1になることは理解できました。
マイナスの値を取りたくなかっただけなのでチェックをするようにしてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
fgetsについて
-
charからLPTSTRへの変換方法
-
文字列から空白を取り除きたい...
-
間接参照のレベルが異なっています
-
構造体の各メンバにfor文からア...
-
TCP/IP通信型大文字・小文字変...
-
CStringをwchar_tに変換したい
-
C言語のポインターで詰まっている
-
charでの計算?
-
文字列
-
リストボックスのオーナードロ...
-
ファイルから入力した文字数を...
-
配列をnビットシフトする
-
C言語プログラミングについて(...
-
型変換
-
getchar()を int でとる理由...
-
プログラミング(関数reverseを...
-
str系関数を使わずに二つの文字...
-
2曲同時再生するにはどうした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構造体の各メンバにfor文からア...
-
fgetsなどのときのstdinのバッ...
-
文字列から空白を取り除きたい...
-
C言語のfor文です。 繰り返しの...
-
CStringをwchar_tに変換したい
-
間接参照のレベルが異なっています
-
c++ 文字列を入力して、一文字...
-
C言語の入力した文字を反転させ...
-
charからLPTSTRへの変換方法
-
ネットワークにつながっている...
-
'const char *' 型は 'char *' ...
-
テキストデータをそのままバイ...
-
c言語でユーザ関数を利用して入...
-
atoi( ) の反対をやりたい
-
間接操作のレベルとは
-
-'0'の意味について
-
double型の値をchar配列に変換...
-
Linuxでフォルダ内全ファイル名...
-
配列をnビットシフトする
-
型変換
おすすめ情報