No.1ベストアンサー
- 回答日時:
それは、具体的にどのCPU向けのなんというCコンパイラの話でしょうか?
また
#include <stdio.h>
#include <limits.h>
int main(){
int s = sizeof(unsigned int);
printf("sizeof(unsigned int)=%d\n",s);
printf("UINT_MAX=%u\n",UINT_MAX);
return 0;
}
このプログラムを実行したらどんな出力になりますか?
(標準ライブラリが使えるコンパイラで、printfでの出力ができたとして)
intの大きさは、対象CPUやコンパイラの種類によって違います。
例えば、Windows PC用のVisual C++だと intは32ビットで、次のように出力されるはずです。
sizeof(unsigned int)=4
UINT_MAX=4294967295
> unsigned int は6万しか取れなくて
「6万」という「中途半端」な値ということは、まずありません。
普通は内部では二進数が使われているので、intが16ビットのコンパイラだと 65535が最大になります。
このとき、上記のプログラムでは 「sizeof(unsigned int)=2」「UINT_MAX=65535」 と出力されると思います。
※ sizeof(unsigned int)= の方は違う値になるケースもありますが。
「6万しか取れなくて」等と言われると、この情報自体が間違っているのでは?と疑ってしまいます。
> unsigned int に0xffffffを代入
まず。
整数型間では、「暗黙の型変換」が行われます。
unsigned int u; とした場合、
u=0xffffff ;
は
u=(unsigned int)0xffffff ;
と同じ意味になります。
大きな型から小さな型(int→char等)の場合、上位ビットの足りない分は無視されて下位だけが残ります。
例えば、char c; の場合 c=0x1234; は、下位の 0x34 だけがcに代入されます。(charが8ビットの場合)
intが16ビットというのが正しければ、 「u=0xffffff ;」と書くことは可能ですが、実際には上位ビットが捨てられて「u=0xffff ;」となります。
intが16ビットというのが間違っていて、24ビット以上(UMAX_INTが16777215以上)ならば、0xffffff が正しく代入できます。
この回答へのお礼
お礼日時:2016/01/07 07:21
ありがとうございます(_ _;)
charは1バイト
intは2バイトと勘違いしていました
unsignedintは符号なしの4バイトですね
感謝します。
関数電卓で2^32をやってみた結果4294967296になりました。
ネットで調べると4294967295でした
1誤差がありましたどうしてでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2の補数を計算するプログラム
-
C言語で%を使わない余りの出し方
-
画像の拡大・縮小
-
関数とビット列
-
C言語でDOS画面のプログラム(...
-
argvのNULLチェック
-
Debug Assertion Failed
-
C言語で簡単なパックマンゲーム...
-
C++ Debug Errorについて教えて
-
カードシャッフルのブログラム...
-
偶数パリティ
-
2÷3などの余りについて
-
Enterキーを押されたら次の処理...
-
「指定されたキャストは有効で...
-
マイナスからプラスへ転じた時...
-
二次関数と関数の違いは何ですか?
-
「Aに対するBの割合」と「Aに対...
-
C言語初心者です、、、お助けく...
-
数字以外が入力されたらエラー...
-
2番以降って2番も含まれますか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
C言語で簡単なパックマンゲーム...
-
迷路を脱出する経路探索プログ...
-
関数とビット列
-
3のつく数と3の倍数を表示 C言語
-
再起呼び出しの回数をカウント...
-
OpenCVによる4値化について
-
C++で表を作成したいのです ...
-
コマンドプロンプトのウィンド...
-
再帰処理をループ処理に変換
-
画像の拡大・縮小
-
プログラミングに関して
-
【C#】SQL文の中に変数を埋め込...
-
分数の足し算をさせるプログラ...
-
argvのNULLチェック
-
C言語で%を使わない余りの出し方
-
whileとifを使い偶数を出すには
-
ヌメロンのプログラム
-
条件が多い場合
おすすめ情報