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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# プログラミングのペーパーテスト 実行結果の表示を答えてください #include <stdio.h> 2 2022/07/09 16:14
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で%を使わない余りの出し方
-
分数の足し算をさせるプログラ...
-
nCrの計算
-
C言語
-
カードシャッフルのブログラム...
-
CppUnitはCプログラムにも使え...
-
intとlongは同じ?
-
ハフマン符号化の問題を解くプ...
-
C++で表を作成したいのです ...
-
プログラミング
-
VC++でコマンドラインから引数...
-
C言語 サイコロ 2つの値を返せない
-
2÷3などの余りについて
-
比較回数と交換回数表示について
-
信頼区間の1.96や1.65ってどこ...
-
nCmの関数
-
複数桁10進数の*桁目だけを抽出...
-
Notepad++の関数リスト表示の変...
-
C言語のfor文です。 繰り返しの...
-
break文でループを一気に抜ける...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
再起呼び出しの回数をカウント...
-
C言語で%を使わない余りの出し方
-
迷路を脱出する経路探索プログ...
-
画像の拡大・縮小
-
分数の足し算をさせるプログラ...
-
C言語で簡単なパックマンゲーム...
-
C++で表を作成したいのです ...
-
条件が多い場合
-
複数の共有メモリの作成
-
ヒストグラム均等化処理プログラム
-
3のつく数と3の倍数を表示 C言語
-
argvのNULLチェック
-
乱数で交互に偶数、奇数が、、、。
-
プログラミングに関して
-
OpenCVによる4値化について
-
再帰処理をループ処理に変換
-
16bitで乱数を生成する方法
-
C++ Debug Errorについて教えて
おすすめ情報