タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Programmingとc_c++とprogrammingに関するpipeheadのブックマーク (127)

  • C言語プログラミングの覚え書き(改訳) - アスペ日記

    原文: Notes on Programming in C Rob Pike 1989年2月21日 Copyright (C) 2003, Lucent Technologies Inc. and others. All Rights Reserved. Lucent Public License Version 1.02 前書き KernighanとPlaugerによる“The Elements of Programming Style” (「プログラム書法」木村泉訳)は重要で影響力のあるです。このにはそれだけの価値があります。しかし、その中の簡潔なルールが、来意図されたような哲学の簡潔な表現としてではなく、よいスタイルのレシピとして受け取られているように私は時々感じます。このが変数名は意味を持つようにつけられるべきだと言うなら、名前が使い方を説明するちょっとしたエッセイのような

    C言語プログラミングの覚え書き(改訳) - アスペ日記
  • C言語でプログラミングする際の覚書(Notes on Programming in C) - YAMAGUCHI::weblog

    はじめに こんにちは、Go界のシャールト・コプリーです。気がついたら最後のエントリから3ヶ月も経ってました。 Goを始めると「なんでこういう書き方になってるんだろう」とか、「そもそもなんでこういう仕様になってるんだろう」とか思うことがちらほらあると思います。これは大いにGoの作者の一人であるRob Pike氏の思想に依るところがあるのが見受けられます。彼のプログラムに対する考え方が25年前に公開され「Pike Style」として知られていますが、いまもその考え方は大きくは変わっていないと思われます。せっかくなので翻訳しました。文はC言語に関する文章ですがその質は言語に依らないものだと思います。 Notes on Programming in C (追記)25年前なのでコンパイラの動作に依存する部分(includeに関する記述)などは古い部分もありますが、プログラミングスタイルに関する部

    C言語でプログラミングする際の覚書(Notes on Programming in C) - YAMAGUCHI::weblog
  • IME でかな入力モードがonになってるか検出する話 - Windows 2000 Blog

    pipehead
    pipehead 2014/09/19
    > 半角かな入力の状態を取得する時にImmGetConversionStatus を使うと色々な問題があるみたいです
  • いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記

    私はつい最近まで勘違いしていました。 ここのページに書いてあるような方法で、一様分布する整数が得られると。 int random(int n) { return (int)(( rand() / (RAND_MAX + 1.0) ) * n); } この方法、一見すると実に一様分布が得られそうに見えるんですよね。 どういう思考回路を通っているかというのを自己分析すると、次のような感じです。 1. rand() では 0〜RAND_MAX のランダムな整数が得られる。 2. それを RAND_MAX + 1 で割ると、[0, 1) に一様分布する実数が得られる。 3. [0, 1) の一様な実数を n 倍して小数点以下を切り捨てたら、0 から n-1 に一様分布する整数が得られる。 これの罠なところは、1 と(特に)3 が正しいというところだと思います。 ただ、2 がダウト。 思いっきりダウ

    いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記
  • http://www.sat.t.u-tokyo.ac.jp/~omi/random_variables_generation.html

    http://www.sat.t.u-tokyo.ac.jp/~omi/random_variables_generation.html
    pipehead
    pipehead 2013/04/19
    一様乱数; 線形合同法と Mersenne Twister の比較
  • ヌルポインタ - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "ヌルポインタ" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2021年4月) ヌルポインタ(英: null pointer 英語: [nʌl pɔɪntə(ɹ)])とは、何のオブジェクトも指していないことを表す特別なポインタの値である。 プログラムではヌルポインタを、不定長のリストの終端を表したり、何らかの動作の結果が失敗であることを表したりするのに使用する。後者の用法は、nullable型やオプション型の Nothing 値(None 値)を使用することもできる。 ヌルポインタの値や型がいかなるものかという詳細は言語によって異なる

    pipehead
    pipehead 2013/04/03
    /* null pointer */ > 言語仕様上の意味としては普通「アドレス0(あるいは他のアドレス)を指し示すポインタ」ではなく、どこも指し示さないものとされる。ヌルポインタを未初期化のポインタと混同してはならない。
  • http://komaken.me/blog/2013/02/25/google%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%AC%E3%82%A4%E3%83%89%E3%82%92%E8%AA%AD%E3%81%BF%E3%81%A4%E3%81%A4%E3%80%81%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%81%AA%E5%91%BD/

    http://komaken.me/blog/2013/02/25/google%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%AC%E3%82%A4%E3%83%89%E3%82%92%E8%AA%AD%E3%81%BF%E3%81%A4%E3%81%A4%E3%80%81%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%81%AA%E5%91%BD/
  • 各種典型再帰関数を非再帰に変換する - 競技プログラミング+αなブログ

    再帰関数はあんまり再帰が深くなるとスタックオーバーフローの危険があり、できれば非再帰で処理を書きたいというケースが稀にある。 再帰関数はスタックを使えば非再帰で書けるとたまに聞くが、実際どうやれば良いか分からなかったので調べてみた。 典型的な再帰関数について、非再帰バージョンの書き方を以下にまとめる。 階乗 簡単にループで書ける。 末尾再帰なので末尾再帰 - Wikipediaのように簡単に変換できる。 再帰版 int factorial(int n) { if (n == 0) return 1; else return n * factorial(n-1); } 非再帰版 次のGCDに合わせてちょっと変な書き方。 int factorial2(int n) { int res = 1; while(1) { if (n == 0) return res; else { res *= n

    各種典型再帰関数を非再帰に変換する - 競技プログラミング+αなブログ
    pipehead
    pipehead 2013/01/29
    階乗, 最大公約数 (ユークリッドの互除法), アッカーマン関数, ハノイの塔, 再帰下降構文解析
  • 浮動小数点、その中身とは « demoscene.jp

    Tweetこんにちは、Falken/brainstormです。 デモの中では、映像を表示するには色んな数学計算が行われてますね。整数計算は簡単だと思いますが、FPUの小数点はどう計算しているのかと考えたことありませんか?そもそも、floatの中の32ビットはどんな意味を持つのでしょう? 今日の記事はIEEE 754を判りやすく説明いたします。 floatの構造体 では、floatの32ビットの中の割り当てるビットを見ましょう。 floatのビットは3つの部分に別けられてますね。 sign bitは1ビットであり、符号という意味。このビットが0の場合は正の数、1の場合は負の数です。 exponentは8ビットであり、指数部という意味。簡単で言うと、この8ビット分は、基数2で小数点の位置が決められます。 mantissaは残りの23ビットで仮数部という意味。指数部で決められた幅の中で、この23

    pipehead
    pipehead 2012/12/29
    ビットフィールドで float の符号部・指数部・仮数部の中身を見る; 無限大, 非正規化数, QNaN, SNaN, 正規化数 (normalized float)
  • エデンの園でおきたこと - steps to phantasien

    有給を駆使し一足早くクリスマス休暇に突入、ヒャッホイ Ingress やるぜーと 意気込んでいた矢先ノロウイルスにやられダウンした。かなしい。鎮まれ俺の胃袋・・・ そんな腹痛日和の気晴らしとして今日は Garbage Collection Advent Calendar に参加してみることにしました。 Advent Calendar 初体験につきよくわかってないけど勝手に参加していいんですよね? GC というとジェネレーショナルだのパラレルコンカレントだのといった話が目立ちがちだけれど、 現実の問題というかブラウザを相手にするとそれ以外の細々とした面倒が目につく。 GC つき言語 (JavaScript) のコードと C++ で書かれたコードとの連携は最たる面倒の1つ。 たとえば WebKit の DOM は C++ で実装されており、 C++ のオブジェクトは JavaScript 処理

  • コーディングスタイルまとめ

    随時更新中です。ご了承ください。 書いた人に重大な欠陥があるため、言語仕様と合わないなど多いです。絶賛フィックス中…… 現在までの問題点一覧 __(アンダーバー2つ) C++ではすべて予約語。 Cでもリンク時に異常が出る可能性あり? コーディングスタイル、それは全プログラマを宗教戦争へと貶める魔の言葉のひとつである。(他にはスクリプト言語宗教戦争、エディタ宗教戦争などがある) 基方針 伝説を信じない。 真実を受け入れる。 言語特有の伝統的な作法がある場合、そちらを優先する。 その作法が伝説に由来するものならば、訂正する。 業務でコードを書くプログラマ、つまりある程度の範囲でコードを他者(あるいは他社)と共有する必要があるプログラマとしてまとめる。 そもそも個人のコーディングスタイルなど、誰も興味が無い。自由に書けばいい。当に個人のものならば。 そのため、ある程度強制を感じさせる口調で書

    コーディングスタイルまとめ
  • 平方根を使わずに高速で2点間の距離を近似する - きしだのHatena

    2点間の距離の計算では平方根が必要になりますが、平方根は少し重い計算です。ということで、平方根を使わず、掛け算・割り算・足し算と絶対値・最大・最小だけで距離を近似する方法についての記事を翻訳してみました。 flipcode - Fast Approximate Distance Functions (12:02 補足:おそらく今の標準的なCPUでやる意味はほとんどないと思います。近似のアプローチとして面白いというくらいの話。Z80でやりましょう) 距離関数高速近似 by Rafael Baptista (27 June 2003) 2点間のユークリッド距離を求める計算式は次のようになる。 二次元では次のようになる。 この関数の計算には、平方根が必要になる。これは最近のコンピュータでも高価な計算である。平方根は逐次近似によって求められる。つまり、コンピュータは平方根近似のループを行って、与え

    平方根を使わずに高速で2点間の距離を近似する - きしだのHatena
    pipehead
    pipehead 2012/06/04
    http://www.flipcode.com/archives/Fast_Approximate_Distance_Functions.shtml の和訳; 三次元: d = (X^2 + Y^2 + Z^2)^(1/2); 二次元: d = (X^2 + Y^2)^(1/2)
  • 2012-05-06

    Win32 APIにはファイルの変更を監視する方法として、少なくとも2つの方法がある。 私は従来よりファイル監視のためのAPIとして、FindFirstChangeNotification関数を愛用している。 だが、WindowsNT系のUNICODEビルドであれば使えるというReadDirectoryChangeW関数によるファイル監視を使うことにより、パフォーマンスの改善が望めそうに思えたため、これを用いた場合には、どのような実装方法となるのか確かめたく実験してみることとした。 FindFirstChangeNotification APIを使ってファイルを監視する方法 Win32でファイルの変更通知を行うものとしては、Windows95時代から使える方法として、FindFirstChangeNotification関数があげられる。 このAPIは、指定したディレクトリまたは、その配下

    2012-05-06
    pipehead
    pipehead 2012/05/06
    FindFirstChangeNotification(), ReadDirectoryChangesW()
  • 負数の剰余を計算してはならない - おともだちティータイム

    負数が含まれる剰余を計算した場合、言語に跨がって一意な結果が得られない。 -5 % 3 5 % -3 C -2 2 C++ -2 2 Java -2 2 Ruby 1 -1 Python 1 -1 Common Lisp 1 -1 さて、なぜこんなことが起きるのかというと、剰余には複数の定義が存在するからである。 m ÷ n = q … rこの r を剰余と言うが、 r の範囲が 0 ≤ r < n 最小非負剰余 -n/2 ≤ r < n/2 絶対値最小剰余 の二つの定義があり、一般的には前者の「最小非負剰余」を用いるようである。 m が負数、 n が正数の場合は、先程の表にあるプログラミング言語は以下のように分類される。 絶対値最小剰余 C C++ Java 最小非負剰余 Ruby Python Common Lisp しかし、最小非負剰余では r が正数になる必要があり、剰余の結果が

    負数の剰余を計算してはならない - おともだちティータイム
    pipehead
    pipehead 2012/04/09
    絶対値最小剰余: C, C++, Java; 最小非負剰余: Ruby, Python, Common Lisp
  • 「知恵ノート」は終了いたしました - Yahoo!知恵袋

    平素よりYahoo!知恵袋をご利用いただきありがとうございます。 2017年11月30日をもちまして、「知恵ノート」機能の提供を終了いたしました。 これまでご利用いただきました皆様にはご迷惑をおかけすることとなり、誠に申し訳ございません。 長年のご愛顧、心よりお礼申しあげます。 引き続き、Yahoo!知恵袋の「Q&A」機能をご利用ください。 Yahoo!知恵袋トップ 知恵ノートサービス終了のお知らせ プライバシー - 利用規約 - メディアステートメント - ガイドライン - ご意見・ご要望 - ヘルプ・お問い合わせ JASRAC許諾番号:9008249113Y38200 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.

    「知恵ノート」は終了いたしました - Yahoo!知恵袋
  • 「知恵ノート」は終了いたしました - Yahoo!知恵袋

    平素よりYahoo!知恵袋をご利用いただきありがとうございます。 2017年11月30日をもちまして、「知恵ノート」機能の提供を終了いたしました。 これまでご利用いただきました皆様にはご迷惑をおかけすることとなり、誠に申し訳ございません。 長年のご愛顧、心よりお礼申しあげます。 引き続き、Yahoo!知恵袋の「Q&A」機能をご利用ください。 Yahoo!知恵袋トップ 知恵ノートサービス終了のお知らせ プライバシー - 利用規約 - メディアステートメント - ガイドライン - ご意見・ご要望 - ヘルプ・お問い合わせ JASRAC許諾番号:9008249113Y38200 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.

    「知恵ノート」は終了いたしました - Yahoo!知恵袋
  • 64bitプロセスから32bitプロセスにDLL Injection (C言語)

    ググったら32bit→64bitはNGだけど、64bit→32bitは行けるという情報があったので試したら行けた。DLL Injectionって何?という人は「別のプロセスにコードを割り込ませる3つの方法」にとても詳しく書かれているのでそちらを参考に。(こういうマニアックな記事は好きだ) 面倒なので自作アプリのソースの一部をそのまま貼る。筋じゃない処理も混ざってるけど自力で読み飛ばし推奨。GOTO_Eは最後のラベルにgotoするマクロ。 bool pAttachRemoteThread(DWORD pid, const char* dllName, bool autoFree, bool waitRemoteSemaphoreRelease){ bool result = false; HANDLE hThread = NULL; PWSTR vDllPath = NULL; HANDL

  • データ型

    データ型について Win32 APIを使うとなると、どうしてもHSPでは使われないようなC言語の知識が必要になる部分が出てきてしまいます。この『データ型(data type)』もそういったものの1つです。 データ型とは、データの性格や数値の表現範囲などを規定するためのものです。すなわち、データのサイズや符号の有無、データが変更されるものかどうかを規定します。HSPでは符号付き32ビット整数と文字列の2種類だけですが、C言語では多くの型が存在します。 まず、Cの世界では最も基的な型として以下のものがあります。(32ビット処理系の場合) データ型 ビット幅 呼称 範囲

    pipehead
    pipehead 2011/04/26
    C 言語と WinAPI の基本的なデータ型について
  • Story of Your Life » Blog Archive » 【算術演算小話 その二】 負の剰余について

    今回は負の剰余の話です。 剰余は正の数同士の場合は何も問題ないのですが、負の剰余をとってしまうとはまることがあります。 なぜなら言語処理系依存だからです。C++, pythonのそれぞれを比較すると下記のようになります。 (C) -2 % 5 = -2 (python) -2 % 5 = 3 計算結果は違っていますが、この二つプログラミング言語の剰余は、両者とも、以下の等式が成り立つような値と定義されています。 x == (x / y)*y + x%y つまり剰余の値は、 x % y = (x / y)*y - x という式で得られます。 剰余の計算結果が異なっている原因は負の値に対する除算の値が異なるからです。 (C) -2 / 5 = 0 (python) -2 / 5 = -1 下のグラフを見ていただければわかると思うのですが、pythonの場合、除算の結果は「x 以下の最も大きい

    pipehead
    pipehead 2011/01/16
    > pythonの場合、除算の結果は「x 以下の最も大きい整数」で返しますが、Cの場合は「絶対値で0に近い整数」となります。
  • Story of Your Life » Blog Archive » 【算術演算小話 その一】 倍数への切り上げ

    パイプライン処理といった技術の発達した最近のCPUでは、条件分岐を減らすことで最適化が可能な場面があります。 こういった場合に稀に利用されるのが、算術演算を利用したテクニックです。 算術演算を上手く利用することで、場合によっては必要だった条件分岐も削減可能なことがあります。 そんな算術演算の重要性の高まりを受け、今日から3回に分けて算術演算に関する話をしたいと思います。 まぁ、そういったこじつけ的な背景説明はともかく、@machyさんに教わったテクニックを僕の中だけにおさめておくには勿体無いなぁと思ったのが当の動機です。 例えばプロセスのメモリ使用量をKB単位で表示したいとします。 こういった場合、実際のメモリ使用量は1500バイトでも、多めに見積った方が好まれるため、1024の倍数に切り上げて2048/1024で2KBと表示します。 ではこの倍数への切り上げ処理を素直に書いてみ