🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

4回答

913閲覧

sizeof演算子について

hyn4

総合スコア2

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/03/08 03:05

sizeof演算子での値についての質問です。
sizeof演算子を使用した式を評価した値を表示するという問題で、
int n
(unsigned)(sizeof n+2)
(unsigned)(sizeof (n+2))
(unsigned)(sizeof (n+2,0))の3つを%uで表示したとき3つの値が違うのはどうしてでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/03/08 03:19

3つの値が違うとはどういう値が出るんでしょうか
guest

回答4

0

ベストアンサー

(unsigned)(sizeof n+2)

優先順位の関係でsizeof(n+2)とはならず、( sizeof n ) + 2 となります。
( sizeof int ) + 2 で6になります。

(unsigned)(sizeof (n+2))

「n+2」というint値のサイズを求めていて実質「sizeof int」と同じになり4になります。

(unsigned)(sizeof (n+2,0))

「n+2,0」はカンマ演算子で右の式が値となるので「sizeof 0」 となり
実質「sizeof int」と同じになり4になります。

※回答で示したサイズ値は(sizeof int)==4の環境の場合です。

投稿2021/03/08 03:31

編集2021/03/08 13:55
hidezzz

総合スコア1248

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hyn4

2021/03/08 13:39

非常にわかりやすく助かりました。ありがとうございました。
otn

2021/03/08 13:47

> sizeof( n ) + 2 sizeof n + 2 が (sizeof n) + 2 か、sizeof(n+2) かという問題なので、sizeof ( n ) + 2 という括弧付けは意味が無いです。
hidezzz

2021/03/08 13:55 編集

ご指摘ありがとうございます。回答を修正しました。
guest

0

単項演算子は、二項演算子より優先度が高いです。
つまり、
sizeof n+2は、冗長な括弧を付けると(sizeof n)+2です。

投稿2021/03/08 03:16

otn

総合スコア85893

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

sizeofというのは、その変数が占めるメモリサイズを表します

投稿2021/03/08 03:22

y_waiwai

総合スコア88040

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

最初のは、 sizeof n に 2 を足しているから int サイズ+2 だけど、
他は、int のサイズを演算しているだけ。

投稿2021/03/08 03:19

PingHermit

総合スコア478

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問