C/C++言語の問題です

1 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:01:16.091 ID:z8lSHXp8M
ある実態を持つ4バイトポインタ、*pのアドレスから、24バイトのアロケートを行った。
ポインタを3回動かしたあと、
short *q=(short *)p;
としたあと、q+=3をした後、qに対して、0x000000FFを書き込んだ。
この環境がリトルエンディアンだった場合、*p[1]に入る値を述べよ
2 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:02:08.886 ID:h5pYQ9X+0
うんち!
3 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:02:11.816 ID:WS9saQfKd
リトルエンディアンて聞くたび子供のインディアンが浮かぶ
4 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:03:23.219 ID:z8lSHXp8M
おい、まさかお前らわからないなんてことはないよな?
6 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:07:51.940 ID:ugGO10cS0
これやるレベルって家電の基盤とか?
7 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:08:56.196 ID:GsIVmfMl0
>>6
今どきいない
マイコンも高級言語で書けるし
8 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:09:56.738 ID:z8lSHXp8M
>>6
>>7
いや、普通にやるよね
10 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:10:44.141 ID:GsIVmfMl0
>>8
そんなポインタの動かし方はしないだろ
ハグの温床だぞ
9 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:10:42.065 ID:tqlQF3Op0
はたしてその実態はっ!?
11 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:12:53.204 ID:z8lSHXp8M
正解はでした
12 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:13:12.449 ID:z8lSHXp8M
正解は0でした!
13 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:15:13.901 ID:ppZF4l2C0
>リトルエンディアンだった場合

バス幅と86系か68系かで結果が変わるんだが条件の提示が雑すぎる
たぶんニワカの作った問題

16 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:23:46.599 ID:z8lSHXp8M
>>13
バス幅では変わりません
x86とx64でも変わりません
intというなら環境で変わるけど4バイトポインタとshortだからね?
27 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:43:05.723 ID:ppZF4l2C0
>>16
68系すら知らないニワカがドヤてんじゃねーよ
30 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:45:39.799 ID:z8lSHXp8M
>>27
68系CPUしってるからこそx64とx86出したんだけど?それとも8081はねってやればよかったのか?
やっても答えは、『同じ』だよバーカ
32 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:47:08.332 ID:ppZF4l2C0
>>30
やっぱり知らねーじゃねーかバーカ
68はインテル系じゃねーよ知ったかぶり野郎
14 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:19:18.348 ID:tW1xrMPhH
ポインタを3回動かすってなんやねん
15 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:21:04.526 ID:z8lSHXp8M
char *cでいうと
pはc[0]
qはc[6]
0x000000ffをqに対して書き込むと
c[6]がFFで、7番目から00になる
で、1バイト足りないため、000000??になる。
リトルエンディアンでのアロケートという言葉は初期割当はゼロ。
既に割り当てられた領域を再利用する場合はアロケートじゃなくメモリ移動になるから00

ゆえに
00000000になる。

17 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:24:25.107 ID:z8lSHXp8M
こういう無能しかいないのか?
18 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:24:29.630 ID:G6SEymNG0
shortって何bitか固定なん
20 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:27:40.595 ID:z8lSHXp8M
>>18
16ビット固定だよ
intは16から64まで変わる
longは32から64まで変わる
19 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:27:17.775 ID:Nn2jocHZ0
量子コンピュータ研究者の俺からすると、国語でいうところの古文の問題に見えるな
21 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:28:49.866 ID:h5pYQ9X+0
情報系の試験もそうだけどなんでわざわざ文章で書くんだろ
22 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:32:58.116 ID:z8lSHXp8M
16ビットcpuのintは2バイトでshortと同じ
32ビットcpuのlongは4バイトでintと同じ
64ビットcpuのlongは64ビットだけどwow64によりwndowsはlong4バイトとなる
その代わり、linuxのlongと互換性を持たせるため、longlong型を用意した

Int16 Int32みたいなのは、intって結局何バイトなのさ!ってのを表すために規約で後にバイト数を書くことになってる

gitをあさるとArrayに数値を入れた配列とかの定数をつけるコードがあるけど

あれはドットネットの規約ルールだから

23 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:33:54.930 ID:z8lSHXp8M
どやさ
24 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:33:57.551 ID:tW1xrMPhH
嘘つくなよ
shortは1byteで定義されてる場合もあるぞ
26 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:36:57.004 ID:rTHAF+P90
>>24
まじか 1 byte もあるのか?
25 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:35:58.713 ID:rTHAF+P90
short は int 以下なら何 byte でも良いんじゃなかったけ?
2 byte と 4 byte の処理系があったと思う。
29 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:44:23.805 ID:z8lSHXp8M
31 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:46:41.589 ID:G6SEymNG0
>>29
それは言語の仕様?コンパイラの仕様?
33 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:50:18.270 ID:z8lSHXp8M
>>31
ANSIを知らないの?
28 名前:一般よりも上級の名無しさん 投稿日時:2022/04/20(水) 20:44:21.648 ID:G6SEymNG0
仕様書のどこに書いてる?

コメント一覧

タイトルとURLをコピーしました