ふ 流浪の日々

日々流されてます

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  72  : 記事  0  : コメント  1206  : トラックバック  34

ニュース




書庫

日記カテゴリ

ではでは、ご挨拶後に初めてのネタ披露です。

堅苦しい説明にならないように留意します。。。
「あー、そんな雰囲気なのね」と感じていただけたら幸いです。
「あたりまえだろー」「間違ってる」・・・そんな意見も真摯に受け止めます。。。


今回のお題は「Literals」@C++です。
教科書は「ISO/IEC 14882:2003(E)」です。

難しく構える必要もなく、普段言ってる「文字リテラルが~」とかそんなやつですね。

ここを読んでくださってる方々は「ほら、あれでしょ。変数使わずに直接書くやつ。」とすぐに説明できると思いますが、具体的にどんなもんだよと書いてあるのか観てみましょう。


教科書を紐解く前に「Literal」で辞書を見ると、
(1)文字[字義]どおりの
(2)事実に忠実な, 誇張のない
(3)正真正銘の, まったくの
(4)文字(上)の, 文字で表現された;アルファベットの

でした。(4)が適当な感じですね。


で、どんなのがあるかというと、
---------------------------------------------------------------
There are several kinds of literals.
literal:
  integer-literal
  character-literal
  floating-literal
  string-literal
  boolean-literal

---------------------------------------------------------------
(1)整数リテラル
(2)文字リテラル
(3)浮動小数リテラル
(4)文字列リテラル
(5)真理値リテラル

こんなんがあると謳っています。


今回は飲みながら書いているというのもあるので(笑)(1)の整数リテラルについてのみ・・・


---------------------------------------------------------------
2.13.1 Integer literals [lex.icon]
      integer-literal:
          decimal-literal integer-suffixopt
          octal-literal integer-suffixopt
          hexadecimal-literal integer-suffixopt
      decimal-literal:
          nonzero-digit
          decimal-literal digit
      octal-literal:
          0
          octal-literal octal-digit
      hexadecimal-literal:
          0x hexadecimal-digit
          0X hexadecimal-digit
          hexadecimal-literal hexadecimal-digit
      nonzero-digit: one of
          1 2 3 4 5 6 7 8 9
      octal-digit: one of
          0 1 2 3 4 5 6 7
      hexadecimal-digit: one of
          0 1 2 3 4 5 6 7 8 9
          a b c d e f
          A B C D E F
      integer-suffix:
          unsigned-suffix long-suffixopt
          long-suffix unsigned-suffixopt
      unsigned-suffix: one of
          u U
      long-suffix: one of
          l L
---------------------------------------------------------------

C/C++を解る人は「あー」って感じだと思います。。。


---------------------------------------------------------------
integer-literal:
    decimal-literal integer-suffix(opt)
    octal-literal integer-suffix(opt)
    hexadecimal-literal integer-suffix(opt)
---------------------------------------------------------------
整数リテラルは、
・10進リテラル+サフィックス(サフィックスはオプション)
・8進リテラル+サフィックス(サフィックスはオプション)
・16進リテラル+サフィックス(サフィックスはオプション)

ということです。以下、そのことについての説明です。

---------------------------------------------------------------
decimal-literal:
    nonzero-digit
    decimal-literal digit
---------------------------------------------------------------
10進リテラルは、
・nonzero-digit:非0の10進が先頭で、
・decimal-literal digit:後の数値は10進
になります。

よく重箱の隅をつつくような話で、
「C言語に10進の0は無い(先頭が0は8進表記だから)」
なんてのがありますが、この辺のお話ですね。

---------------------------------------------------------------
octal-literal:
    0
    octal-literal octal-digit
---------------------------------------------------------------
8進リテラルは,
・0:先頭が0
・octal-literal:8進数値
になります。

はい、そこの新入社員さん、
const int NUMBER_A = 1234;
const int NUMBER_B = 0234;
なんて揃えて迷惑をかけないように。。。

---------------------------------------------------------------
hexadecimal-literal:
    0x hexadecimal-digit
    0X hexadecimal-digit
    hexadecimal-literal hexadecimal-digit
---------------------------------------------------------------
16進リテラルは、
・0x hexadecimal-digit:0xが先頭に付加された数値
・0X hexadecimal-digit:0xが先頭に付加された数値
・hexadecimal-literal hexadecimal-digit:0xや0Xで始まる16進数値の連続
になります。

シフト押すのが面倒くさいのと、慣れで「0x」派でした。。。

---------------------------------------------------------------
nonzero-digit: one of
    1 2 3 4 5 6 7 8 9
---------------------------------------------------------------
これは簡単ですね。
nonzero-digit:非ゼロの数値、1~9です。

---------------------------------------------------------------
octal-digit: one of
    0 1 2 3 4 5 6 7
---------------------------------------------------------------
octal-digit:8進の数値・・・当然0~7までですね。

---------------------------------------------------------------
hexadecimal-digit: one of
    0 1 2 3 4 5 6 7 8 9
    a b c d e f
    A B C D E F
---------------------------------------------------------------
hexadecimal-digit:16進は・・・見ての通りですね(笑)
0~9、a~f、A~Fです。

---------------------------------------------------------------
integer-suffix:
    unsigned-suffix long-suffix(opt)
    long-suffix unsigned-suffix(opt)
---------------------------------------------------------------
整数リテラルに付加可能なサフィックスは、
unsigned-suffix long-suffix(opt):正負サフィックス+longサフィックス(オプション)
long-suffix unsigned-suffixopt:longサフィックス+正負サフィックス(オプション)
となります。

正負サフィックスとlongサフィックスについては以下・・・

---------------------------------------------------------------
unsigned-suffix: one of
    u U
---------------------------------------------------------------
unsigned-suffix:正負のサフィックスは[u][U]のどちらか
ですね~。

なぜか小文字の[u]のほうはクセで使わないかも。。。

---------------------------------------------------------------
long-suffix: one of
    l L
---------------------------------------------------------------
long-suffix:longのサフィックスは[l][L]のどちらか
ですね~。

こちらも小文字の[l]のほうはクセで使わないかも。。。


これらをきちんと把握していれば・・・整数リテラルマスター(笑)


はい、ここから文章に入ります(笑)
---------------------------------------------------------------
An integer literal is a sequence of digits that has no period or exponent part. An integer literal may have a prefix that specifies its base and a suffix that specifies its type. The lexically first digit of the sequence of digits is the most significant. A decimal integer literal (base ten) begins with a digit other than 0 and consists of a sequence of decimal digits. An octal integer literal (base eight) begins with the digit 0 and consists of a sequence of octal digits.22) A hexadecimal integer literal (base sixteen) begins with 0x or 0X and consists of a sequence of hexadecimal digits, which include the decimal digits and the letters a through f and A through F with decimal values ten through fifteen. [Example: the number twelve can be written 12, 014, or 0XC. ]
---------------------------------------------------------------


・An integer literal is a sequence of digits that has no period or exponent part.
まぁ、これは当然ですね。
>sequence of digits
数値が連続(sequence)していないと困ります。。。 999 123 と間が空いては解りません。
>no period or exponent part
これもそうですね・・・小数点が入ったら(period)整数ではないですし、指数部(exponent part)が入っても整数ではないです。

・An integer literal may have a prefix that specifies its base and a suffix that specifies its type.
>a prefix that specifies its base
接頭辞がリテラルの基礎を決めるんですね。8進or10進or16進を。
>a suffix that specifies its type
サフィックスがunsignedだったりlongであることを示すんですね。

・A decimal integer literal (base ten) begins with a digit other than 0 and consists of a sequence of decimal digits.
10進リテラルは0以外の数値から始まる数値の連続です。

・An octal integer literal (base eight) begins with the digit 0 and consists of a sequence of octal digits.22)
8進リテラルは0から始まる8進数値(0~7)の連続です。

・A hexadecimal integer literal (base sixteen) begins with 0x or 0X and consists of a sequence of hexadecimal digits,which include the decimal digits and the letters a through f and A through F with decimal values ten through fifteen. [Example: the number twelve can be written 12,014, or 0XC. ]
16進リテラルは0x,0Xから始まる16進数値(0~9,a~f,A~F)の連続です。



うーん、飲んだ勢いでここまで書いたけど・・・
「これを面白がってくれる人がいるのか」
なんて悩んでしまいました・・・とは言っても普段は仕事のある身、書くのに時間をかけられず・・・とりあえずアップ><

大丈夫、スタイルなんて後からできていくから・・・多分。まぁいいや、流浪流浪っと・・・

                 ハ_ハ  
               ('(゚∀゚∩ なんとかなるよ!
                ヽ  〈 
                 ヽヽ_)
・今日の単語
decimal:10進の
octal:8進の
hexadecimal:16進の
digit;0~9の数値
prefix:接頭辞
suffix:接尾辞

投稿日時 : 2007年2月14日 23:57

コメント

# re: 【C++】Literals 2007/02/15 0:08 匿名
const int NUMBER_A = 1234;
const int NUMBER_B = 0234;

こんなお落とし穴あるんですね。234 は 234 としか書かないからなぁ・・・
これからも期待しています。
ISO/IEC 14882:2003 だけと言わずに ISO/IEC 9989:1999 も、、、、


# re: 【C++】Literals 2007/02/15 0:22
>匿名さん

どもども、コメントありがとうございます。

華麗いスルーされたまま終了かと思いました(笑)


>const int NUMBER_A = 1234;
>const int NUMBER_B = 0234;
>こんなお落とし穴あるんですね。234 は 234 としか書かないからなぁ・・・

解ってれば「あはは」ですが、初学者の中にはきっとはまってしまった方も・・・何事も勉強ですね。


>ISO/IEC 14882:2003 だけと言わずに ISO/IEC 9989:1999 も、、、、

ISO/IEC 9989:1999 のほうも見ていきますよ~。

C#のほうもほじほじしていきたいですね~。
msdn.microsoft.com/net/ecma/




# re: 【C++】Literals 2007/02/15 2:41 RAPT
とあるソースコードで、1000000UL って書いていたら、C++じゃない人に
何ソレ? って言われた事があります。
他の言語にはないんでしょうかね。


# re: 【C++】Literals 2007/02/15 9:16
>RAPTさん

>とあるソースコードで、1000000UL って書いていたら、C++じゃない人に
>何ソレ? って言われた事があります。
>他の言語にはないんでしょうかね。

んー、どうなんでしょうね~。

C#やJAVAには整数リテラルにつくサフィックスありますけどね~(JAVAは整数型がsignedしかないのでサフィックスUは無いですが)

(1)あまり意識していない
(2)整数リテラルについてサフィックスが無い言語がある

どちらかでしょうか?


# re: 【C++】Literals 2007/02/15 9:21
↑JAVAもC#もほんのりかじっただけなので、間違ってたらつっこんでください。。。

# re: 【C++】Literals 2007/02/15 11:03 ぽぴ王子
おっ、人間っておもしれー!(おまえわリュークか)

間違えた。「人間って」は不要です(今さら)

というかですね、こういった話って今まで僕が知る限りでは誰もやってくれなかったと
思うんですよ。まぁそれなりの本を買えばキチンと解説してくれてるのかもしれませ
んが。
それこそみんな「MSDNにこう書いてあるから」とか「コンパイラがこういうコードを吐く
から」みたいな感じで、わりと現場主義というか、行き当たりばったり(ちょっと違う)
な感じでプログラミングしていることが多いような気がするわけですけど、こういうISO
の資料を和訳というか解説していただけるとものすごくためになります。
是非続けていただきたいシリーズ!いやマジで。

サフィックスって、僕も C で初めて意識しました。MS-C の独自拡張(笑)
BASIC(VBより前のアレ)なんかにはサフィックスないですね。たぶん。
サフィックスがないと、1000000UL は ((unsigned long)1000000) って書かなくちゃ
いけなくなって、そしたらアホなコンパイラだとわざわざキャストするコードを吐いちゃ
うだろうが!がっかりだよ!と桜塚やっくんもお怒りになるとかそういう理由なのかな
と。

でも、今は VB ですら(ですらって失礼ですね)サフィックスがありますし、意識してな
いほうに一票。

# re: 【C++】Literals 2007/02/15 11:55 とっちゃん
行き当たりばったりで覚えてきた人がきましたよ~w
#入門書くらいは読んでますが、ほとんど雑誌で覚えたw

おいらは整数だとサフィックスはほとんどつけないですw
u と l は数字の大きさで自動的に確定するし、暗黙の変換でコンパイル時点できちんとした値にしてくれるしw

なので、知ってるけど...ってなところですねww
#ulとか書かれてると、ん?とか思うことがww

# re: 【C++】Literals 2007/02/15 12:48
>ぽぴ王子さん

>というかですね、こういった話って今まで僕が知る限りでは誰もやってくれなかったと思うんですよ。

そうですね。「自分が読みたかった」ものを書いてるな~、という感じです。

市販本だと「あの本の何ページではこう書いてあるけど・・・」としか言えないですし、型とかリテラルとか「こんなのがあります」程度の説明の本が多いですしね。

「ISO/IEC 14882:2003(E)にはこう書いてありますよ。そのコンパイラの動きはどうだか知りませんけど。」って言えるところが魅力ですね。


>わりと現場主義というか、行き当たりばったり(ちょっと違う)な感じでプログラミングしていることが多いような気がするわけですけど、

自分も反省することが多いです。。。


>是非続けていただきたいシリーズ!いやマジで。

ありがとうございます!てっきりコメントもつかずにひっそりと連載していくことに・・・と思っていたので、興味をもっていただいてありがたいです。


「本流」の技術ネタでは勝負にならないので裏道で勝負ですw


>意識してないほうに一票。

多分・・・そうなんでしょうね。

# re: 【C++】Literals 2007/02/15 12:56
>とっちゃんさん

>行き当たりばったりで覚えてきた人がきましたよ~w
>#入門書くらいは読んでますが、ほとんど雑誌で覚えたw

僕も同じですよw

コンピュータにおいては「理論→実践」より「実践→理論」のほうが圧倒的に良い気がします。(この前の「OOディスカッション@東京」でのとっちゃんさんの話を聴いてますますそう思いました。)


>おいらは整数だとサフィックスはほとんどつけないですw
>u と l は数字の大きさで自動的に確定するし、暗黙の変換でコンパイル時点できちんとした値にしてくれるしw

そういえば自分もこんなの書いた割には特に意識してつけてないですね・・・

C++ではなくCの時の話ですが、数値の定数を書くときに、
#define HOGE 1000000UL
なんて書き方はしてました。

どちらかというとサフィックスどうこうというよりも、「これ、整数だから直す時に小数点つけないでね」という本来とは違う目的で。。。

>#ulとか書かれてると、ん?とか思うことがww

確かに小文字だと???に一瞬なりますね。小文字で「l」だけあったら特に。。。(そんな間際らしい書き方した人に突っ込みいれちゃいますが。。。)


# re: 【C++】Literals 2007/02/15 15:51 とっちゃん
>「実践→理論」のほうが
あ。。。脱線第一弾のところだw
あはは。おいらがつい口走ったからなんだよなぁw...orz


>確かに小文字だと???に一瞬なりますね。小文字で「l」だけあったら特に。。。

そうなのよねw
その場に書くリテラルだと、小文字でもOKなんですがw(そこに型がわかるものがいるしw)、
#define の場合は意識して大文字使ってますね。
別に確たる信念も何にもなくて、なぜか...なんですがww


# re: 【C++】Literals 2007/02/15 16:22 ぽぴ王子
> 行き当たりばったりで覚えてきた人がきましたよ~w

コメントを書くときにとっちゃんのことを思い浮かべながら書いていた俺ガイルww
行き当たりばったりというと語弊があるけど、とっちゃんの場合は
<strong>超</strong>現場主義って感じがします。
職人的というか、正式な仕様をわかったうえで「いや、ここの実装はコレだとこうなっ
てるから」みたいな。理想と現実?(違うだろそれ
【ふ】さんの「実践→理論」もそれに近いのかな?とか思ったり。

この辺は昔の話なのでものすごく曖昧になっちゃいますが、前にも書いたとおり僕が
初めてサフィックスを意識したのはMicrosoft Cコンパイラの拡張仕様でそういうのが
あったから、ということであったりします。
その後どうなったのかはわかりませんが、当時のサフィックスはまさに「コンパイラに
型を教えるもの」だったと思うんですが、現状は「(人間に対して)リテラル値の型を
教えるもの」として使われているような気がします。コンパイラも今は頭が良いです
から、別にサフィックスなどなくてもヨロシクやってくれると思いますし(職場で流行中
の表現)、それよりは「これ、整数だから(ry」的な感じで。
#define が大文字を使うというのは昔から「人間に意識させるため」だったような気も
しますし。
なので、僕は #define はもちろん、リテラルも(使うときは)あえて大文字を使うよう
にしてますね。簡単に言うと「存在感」?(なんか違う気がする)

# re: 【C++】Literals 2007/02/15 19:38 とっちゃん
>職人的というか、正式な仕様をわかったうえで「いや、ここの実装はコレだとこうなっ
>てるから」みたいな。理想と現実?(違うだろそれ
いあ、おいらの場合、基本趣味ですからww

それこそ自分が面白いと感じれば、のめりこんで仕事するわけですが、そうじゃないともう...w

ちなみに...
サフィックスを使うのは基本的にはコンパイラが困った~ってときだけですねw<今も昔もw
整数の場合、純粋なリテラルなら(#define じゃないのなら)まずつけませんw

自分で #define した場合で、なおかつなにかを主張する必要があるというとき「だけ」はつけることもありますが、最近ではほとんどそれすら必要とはしなくなってたりww

いあ、だって2Gも表現できればほとんど問題にはならないものww

多いのは、プレフィックスの 0x の方が圧倒的だったりw
#こっちは 0X は絶対に書かないですねwその方が目立つのでわかりやすいw

でも、0 を使うのは \033 だけだな。それすら大抵は \x1b だしww
単に苦手なだけなんですけどねw>Octal


# re: 【C++】Literals 2007/02/15 21:07
>とっちゃんさん

>あ。。。脱線第一弾のところだw
>あはは。おいらがつい口走ったからなんだよなぁw...orz

「そうそうそう!」と熱い眼差しで見てましたよw


>#define の場合は意識して大文字使ってますね。
>別に確たる信念も何にもなくて、なぜか...なんですがww

いまさら小文字にするつもりもないですが、特に大文字にする絶対的根拠ってないですよね・・・「慣例」「読みやすさ」に集約されると思いますが。

# re: 【C++】Literals 2007/02/15 21:18
>ぽぴ王子さん

><strong>超</strong>現場主義って感じがします。
>職人的というか、正式な仕様をわかったうえで「いや、ここの実装はコレだとこうなってるから」みたいな。理想と現実?(違うだろそれ

「仕様」と「現実」はどちらか一方で覚える&納得するのは難しいですよね。

「仕様」だけでは実際「動くアプリ」にどう落とすのかが解らない、
「現実」だけでは言語仕様を正しく使っているのかが解らない、
両方見ていきながら徐々に螺旋状に理解が深まるような気がします。


世の中には「仕様」を見ただけで凄いのを作っちゃう天才がいるんでしょうが、僕は凡才以下なのでw



>#define が大文字を使うというのは昔から「人間に意識させるため」だったような気もしますし。
>なので、僕は #define はもちろん、リテラルも(使うときは)あえて大文字を使うようにしてますね。簡単に言うと「存在感」?(なんか違う気がする)

「存在感」とか、教科書には乗らないような言葉って大事だと思います。
「なんかしっくりいかないなー」というのが一気に氷解したりしますよね。

余計解らなくなるときがありますがw




# re: 【C++】Literals 2007/02/15 21:23
>とっちゃんさん

>それこそ自分が面白いと感じれば、のめりこんで仕事するわけですが、そうじゃないともう...w

www

・・・というわけで、4月から別の職場ですw


>多いのは、プレフィックスの 0x の方が圧倒的だったりw
>#こっちは 0X は絶対に書かないですねwその方が目立つのでわかりやすいw

0xは多用ですね~。だから「0X」にはなんか違和感が。。。


>でも、0 を使うのは \033 だけだな。それすら大抵は \x1b だしww
>単に苦手なだけなんですけどねw>Octal

そういえば\033はなぜか見かけますね。

これはわかってないけどコレを入れるとエスケープに・・・という人がそのまま使っている?と思っていました。


8進というと、UNIXでのパーミッションくらいしか思い浮かばないです・・・CといえばUNIXと縁が深い、ということで8進サポートなのかと思ってました。(勝手な想像です)

# re: 【C++】Literals(その1:整数リテラル) 2007/02/19 12:26 とっちゃん
033 は エスケープコード(ESC)なので、いろんなところで使われてます。
コンソールのカーソル制御や色指定なんかでも昔は使われていました。
この辺は昔の名残が大きいかもしれないですが、最近では 0x1b の方が多い気がするw
さすがに10進数は今はめったに見かけないですが(BASIC時代はあったけどww)ねw
CHR$(13)とかよく書いてたもんなぁwww<古すぎ...orz

仕様と現実は...まぁ実装第一主義ってところですかねw
というか、Windowsに限らず、OS側の機能はバージョンの違いとかで動きが変わったりなんてこともあるんで、仕様なんてあるんだかないんだかな代物だしww
言語側もコンパイラの準拠度の影響は少なからずあるし、なので仕様も大事だけど、今おいらの使ってるコンパイラはそれはできないとか
そういうあきらめの積み重ねはあるかもしれないww
#ってかVC8になってようやく仕様で語れるようになったというべきか...w

# re: 【C++】Literals(その1:整数リテラル) 2007/02/19 14:46
>とっちゃんさん

>さすがに10進数は今はめったに見かけないですが(BASIC時代はあったけどww)ねw
>CHR$(13)とかよく書いてたもんなぁwww<古すぎ...orz

あああ!小学校の頃、ベー〇ガ見ながら(訳もわからず)打ってた記憶が・・・今思うとエスケープだったんですね。。。


>仕様と現実は...まぁ実装第一主義ってところですかねw
>というか、Windowsに限らず、OS側の機能はバージョンの違いとかで動きが変わったりなんてこともあるんで、仕様なんてあるんだかないんだかな代物だしww
>言語側もコンパイラの準拠度の影響は少なからずあるし、なので仕様も大事だけど、今おいらの使ってるコンパイラはそれはできないとか
そういうあきらめの積み重ねはあるかもしれないww

自分の場合、win上とunix上両方で使えるクラスなんかも作ったりもするので、処理系依存の部分は#ifdef __WIN32~#endifなんかで分けないと仕方が無いんですが、できる限り共通にしたいんですよね。

そういうわけで、「言語仕様」というのは「共通項」という意味で(守られてるかも別として。。。)、かなり大事にしたい部分なんですよね。

>#ってかVC8になってようやく仕様で語れるようになったというべきか...w

そうなんですよね。。。当方VC6 orz

# re: 【C++】Literals(その1:整数リテラル) 2007/02/19 15:17

訂正

>>CHR$(13)とかよく書いてたもんなぁwww<古すぎ...orz
>あああ!小学校の頃、ベー〇ガ見ながら(訳もわからず)打ってた記憶が・・・今思うとエスケープだったんですね。。。

CHR$(13)はCRですね・・・



# re: 【C++】Literals(その1:整数リテラル) 2007/02/20 16:28 とっちゃん
>処理系依存の部分
うちは、Windows Only なのでその点では処理系依存は今はないです。
#M版出してたころの名残はあるけどw

このあたりは市販でWindowsOnlyなベンダーはあんまり処理系依存は抱えてないんじゃないかなぁ(^^;

とはいえ、一部ソースはコンパイラバージョン間で相互利用してたりするので
バージョン依存コードはもってますけどww



>CHR$(13)はCRですね・・・
ですw
N-BASIC では一番よく使ってたかもw

CHR$(27)+CHR$(??)は昔々プリンタ制御で多用してましたねw
#??には制御コードがいろいろw

まだ高校生だった頃の話だけどwww


# re: 【C++】Literals(その1:整数リテラル) 2007/02/20 23:36
>とっちゃんさん

>このあたりは市販でWindowsOnlyなベンダーはあんまり処理系依存は抱えてないんじゃないかなぁ(^^;

うーん、うらやましー、とは素直にいえませんね・・・きっと色々な苦労してるでしょうから。。。


>>CHR$(13)はCRですね・・・
>ですw
>N-BASIC では一番よく使ってたかもw

僕はTだったりFだったりしてたので、N社には縁が無かったです。。。ってこの辺は同じですけどね。

そもそも当時は意味が解ってなかったですがw


>まだ高校生だった頃の話だけどwww

当時のパソコン少年も今は立派にwwwですね。



ちょっと(素の)BASICが懐かしく・・・でもちょっと見たら「もういい」って思うかも。。。

#一回だけ機械制御用のPC-9801FからBASICのソースをサルベージ+仕様書が無いのでソースから仕様を読み解くという仕事をしたことが・・・ありがとうベー○ガ(そんなの解りません!って言いたかった。。。)

# re: 【C++】Literals(その1:整数リテラル) 2007/02/21 12:06 とっちゃん
>きっと色々な苦労してるでしょうから。。。
異なるOSとの互換性はないけど、OSのバージョン違いでの苦労はいろいろw
3.1 -> 95 のときは 32bit 化で苦労したし、9x<->NTの違いは今もなお足かせとなっていますしねwww

これに、Vista、x64 とこの先も苦労すること必須な案件が待ち構えてますw

>当時のパソコン少年も今は立派にwwwですね。
パソコンという言葉ができる前の世代だったりww


>ソースから仕様を読み解くという
これは今でもサンプルプログラムとかからやってるなぁw
BASICではないけど、生CとかC++とかは普通にあるしww

MSDNに載ってるような部分的なコードで済むようなのもあるけどw
ほとんどは、説明すらないようなサンプルプログラムを元にして
いろいろ試行錯誤してるしねw
OS側の挙動とかになると、フレームワークのソースを見るなんてのも
普通にあるしww


# re: 【C++】Literals(その1:整数リテラル) 2007/02/21 22:21
>とっちゃんさん

な、なんかある意味チャット状態に・・・

>異なるOSとの互換性はないけど、OSのバージョン違いでの苦労はいろいろw
>3.1 -> 95 のときは 32bit 化で苦労したし、9x<->NTの違いは今もなお足かせとなっていますしねwww

Windowsのバージョン違いより、対象の決まっているクロスプラットフォームのほうが楽です・・・9x<->NTとかVista,x64・・・辛そうです。。。


>パソコンという言葉ができる前の世代だったりww

マイコン・・・というか、当時はナイコンでも想像力でなんとかできたのが不思議です。。。


>>ソースから仕様を読み解くという
>これは今でもサンプルプログラムとかからやってるなぁw
>BASICではないけど、生CとかC++とかは普通にあるしww

僕の場合、残念ながら仕様書が適当な会社なので、ソースが友達です。。。


>OS側の挙動とかになると、フレームワークのソースを見るなんてのも
>普通にあるしww

結局、「いっぺん動かしてみる」になるんですよねw


試行錯誤することの大事さ・・・をどうやって教えたらいいのかが最近の悩み事です。。。

# 【C++】C++が語る「お腹いっぱい」 2008/07/03 7:33 ふ 流浪の日々
【C++】C++が語る「お腹いっぱい」

# thanks for the post 2010/05/06 15:39 ultrasound technician
My cousin recommended this blog and she was totally right keep up the fantastic work!

# re: 【C++】Literals(その1:整数リテラル) 2011/08/25 10:16 Katz
日付を見ると今更のコメに躊躇するのですが、C整数リテラルでぐぐるとトップに来るサイトですので一応…

UとかLとかは使い方によっては結構重要です。個人的にはshortを表すポストフィックスも欲しい。C++でテンプレート関数を使ったりする場合、構成によっては一々の警告でとっっってもウザイ思いをする事になります。
例えば
void hoge(short x) { /***/ }
template<typename T> void tara(T y) { hoge(y); }
と定義しておいて tara(1); とかすると鬱陶しい事になります。コンパイラに依存するかも知れませんが。

ちなみに私は「マイコンは~習う~より慣れろ!」を知ってる世代です(^_^;)
C言語は学生時代に「プログラミング言語C」を読んで勉強しました。私は今でも必須の教科書だと思ってるんですがね、仕様云々だけではなくて、コーディングルールの勉強の為に。今はそもそも本の存在を知らない人が多くなりましたね。どうも新しい人の書いたソースは、スペースの入れ方とかインデントとかが中途半端で読み辛い!と思ったり。でも名著と言われる入門書がそうだったりするから文句も言えない。

歴史的には8進数が先で、16進数が後から一般的になった模様です。出自は示せませんが、どこかでそんな話を見かけた記憶がオボロゲに…。

# hcHGoJlaYIEXnRXRDPA 2011/12/22 21:45 http://www.discreetpharmacist.com/
aAuzUT 52. "The road will be overcome by that person, who goes." I wish you never stopped and be creative - forever..!

# http://www.lvbags-outlets.org/ 2012/10/20 2:32 ルイヴィトン 通販
??????????け?????????傘???????????????銈????????????伀鎰?績??????!

Post Feedback

タイトル
名前
Url:
コメント