質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
C

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

Q&A

解決済

3回答

927閲覧

C言語: a = 1010、a = 01010では結果が全く違うのはなぜでしょうか?

GIOGIO

総合スコア23

C

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

1グッド

0クリップ

投稿2020/05/22 08:27

#include <stdio.h> int main() { int a = 1010; printf("a = %d \n", a);    //a = 1010 }
#include <stdio.h> int main() { int a = 01010; printf("a = %d \n", a); //a = 520 }

a = 1010ならちゃんとこの通り表示されるのですが、
a = 01010だと、a = 520と表示されます。
これはなぜでしょうか?

yohhoy👍を押しています

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

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

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

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

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

guest

回答3

0

頭に 0 がつくと八進数とみなされるからです。

追記

C初級:数値の表し方(10進数、8進数、16進数) | 電脳産物

八進数は読んで字の如く、8 で繰り上がる進法です。十進数の 8 は八進数では 010 と表記されます。同じく十進数の 64 が八進数の 0100 にあたり、8 倍するごとに桁が上がります。

現在のコンピューターでは十六進数が使われることが多いですが、これには 1 バイトが 8 ビットであるため、十六進数が都合が良いという理由があります。

しかし、昔は 1 バイトが 8 ビットであるとは限らず、6 ビットや 9 ビットのマシンが存在しました。1 バイトが 6 ビットの場合は、八進数二桁で 1 バイトがあらわせるため、八進数の出番がありましたが、現在では使われなくなったため、プログラミング言語によっては八進数のリテラルが用意されていないこともあります。

追記

なお Google で「0o1010 in base 10」を検索すると、520 と表示されます。「0o1010 を 10 進数で」でも同じです。

投稿2020/05/22 08:30

編集2020/05/22 08:49
Zuishin

総合スコア28662

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

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

pepperleaf

2020/05/22 09:51

8進数は、テンキーのみで入力できました。 C言語がそんな環境で開発された名残ですね。
guest

0

0を最初につけると8進数としてみなされます。

投稿2020/05/22 08:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

C言語の整数は先頭に0を付けると 8進数 とみなされます。(めったに使われないマイナー機能ですね...)

つまり 01010 を8進数として解釈すると、10進数の 18^3 + 08^2 + 1*8 + 0 = 512 + 8 = 520 です。

投稿2020/05/22 08:31

編集2020/05/22 08:32
yohhoy

総合スコア6191

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問