以下のサンプルソースのように、(1)の場合、出力結果が24にならないのはなぜでしょうか?基礎的な質問だと思いますがよろしくお願いします。
---------------------------------------
サンプルソース
#include <stdio.h>
int getValue(unsigned short* us){
*us = 24;
}
main(){
int ret = 0;
int intVal = 0;
unsigned short usVal = 0;
/* (1)int型のintValをunsigned short型にキャストした場合 */
ret = getValue((unsigned short*)&intVal);
printf("%d\n", intVal);
/* (2)unsigned short型のusValをそのまま引数に渡した場合 */
ret = getValue(&usVal);
printf("%d\n", usVal);
}
----------------------------------
出力結果
1572864 ←(1)の結果
24 ←(2)の結果
-----------------------------------
No.2ベストアンサー
- 回答日時:
CPUがビッグエンディアンだからでしょうね。
00 00 00 00(0x00000000=0)
↓00 18(0x0018=24)を書き込む
00 18 00 00(0x00180000=1572864)
リトルエンディアンだとこう。
00 00 00 00(0x00000000=0)
↓18 00(0x0018=24)を書き込む
18 00 00 00(0x00000018=24)
No.3
- 回答日時:
>リトルエンディアンでintが32bitでしたらそうなるかと。
きゃー(^^;;なにねぼけてるんでしょ!
ビッグエンディアンですよね。
No.1
- 回答日時:
OSやプラットフォームがかかれていないのですが、
リトルエンディアンでintが32bitでしたらそうなるかと。
1572864 = 0x180000
24 = 0x18
ですから。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# (C言語)めちゃくちゃな値になってしまいます。 5 2022/08/13 11:55
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# プログラミングペーパーテスト 次の問題の実行結果を答えろ #include int x[ ] = { 1 2022/06/16 21:49
- C言語・C++・C# プログラムが書けません。 4 2023/01/22 22:57
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「指定されたキャストは有効で...
-
c言語のmまたはnが13以上となる...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
std::set<int> で、ある値が何...
-
(int *)の意味
-
C言語で行列の積を計算できるよ...
-
【C++】関数ポインタの使い方
-
C言語による間引き拡大縮小
-
C言語 配列と関数の練習問題
-
C言語 エラーの原因がわからな...
-
このプログラミング誰か教えて...
-
C言語のサイコロシミュレート
-
c言語の問題です 課題1 (二分探...
-
(マルチスレッド)_beginthrea...
-
銀行のATMを想定したプログラム
-
C言語で分からないところがあり...
-
if と配列の組み合わせ
-
数字列を3桁ごとにカンマで区切...
-
卒業研究でよく分からないとこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
へんな現象
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
if と配列の組み合わせ
-
C言語での奇数の和
-
C言語 配列と関数の練習問題
-
ラップ関数とはどんなものですか?
-
(int *)の意味
-
C言語
-
実数の整数部,小数部の取得
-
足して100になるような乱数のア...
-
卒業研究でよく分からないとこ...
-
数字列を3桁ごとにカンマで区切...
-
c言語
-
std::set<int> で、ある値が何...
-
比較回数と交換回数表示について
おすすめ情報