タグ

*Cに関するurza358のブックマーク (58)

  • [迷信] double の出力書式は "%lf" | 株式会社きじねこ

    この迷信、ないしは事実誤認はあまりにも根が深く、あまりにも多くのプログラマが間違いを犯し続けるため、遂には標準規格の方が折れて、迷信を追認することになったという"暗い歴史"があります。 printf 系の関数で double 型の実引数に対応した書式指定は "%lf" ではなく "%f" が正解です。同様に、"%le" や "%lg" ではなく、"%e" や "%g" を使うのが正解です。 この迷信の元になっているのは、ほぼ間違いなく scanf 系関数の書式との混同です。そして、悪いことには、迷信を信じて疑わない人々が、さらにその迷信を部下や後輩や学生に広めているのです。 C/C++の仕様が分かるのであれば、少し考えれば printf 系関数の書式指定が float と double で区別する必要がないことは容易に理解できるはずです。すなわち、可変個実引数は、既定の実引数拡張によって

    urza358
    urza358 2011/02/25
  • printf(msg) の危険度: uyota 匠の一手

    printf 系の関数に、単一の文字列を表示するために、そのまま文字列を渡す行為を良く見かける。これは、C/C++ 言語の中でも、極めて危険な行為だ。sprintf と fprintf の系統のどちらでも関係なく、かつこれらの派生関数にも一貫して言える。 printf(msg); はよく行われる。そして、C++ だと以下の様な例も見られる。 printf(obj.toString()); なぜこれが危険度大なのかと言うと、msg や toString() が% を含まないという保証が無いからだ。 例えば、SQL クエリ等、文法にて % の利用がある場合は、自殺行為以外の何物でもない。この様な、コードを書く者。この様なコードをコード査読の時に見付けない人々。そして、このコードでも動いていたと抜かすプロジェクトマネジャー等と関わった後は、これらの人々の評価を数段下げておいた方がいい。このような

    urza358
    urza358 2011/02/25
  • printf(buffer) の危険性: uyota 匠の一手

    他人が書いたプログラムを読んでいると結構目に付く。これは、極めて危険な操作だ。fprintf(stderr, buffer) も同じく危険だ。 FILE *Fopen(const char *path, const char *mode) { FILE *fd = fopen(path, mode); if(fd == NULL) fprintf(stderr, path); return fd; } 等とやるのが、よく見られる間違いだ。 FILE *Fopen(const char *path, const char *mode) { FILE *fd = fopen(path, mode); #if !DEBUG if(fd == NULL) #endif fprintf(stderr, path); return fd; } とやってみよう。デバッグしようと #define DEBU

    urza358
    urza358 2011/02/25
  • ポインタと文字列

    10-3.ポインタと文字列 普通ポインタを用いるときには、配列などのアドレスをポインタに設定して用いますが、 文字列の場合には、配列を使わずにメモリ上に取られた文字列のアドレスを直接ポインタに指定することができます。 (1)1つの文字列をポインタで表す (書き方) char *p = "ABC"; char *p; p = "ABC"; まずメモリ上のどこかに文字列 "ABC" がとられ、その先頭番地がポインタに設定される。

  • charとUnicodeとワイド文字をごっちゃにしないために

    ホーム < ゲームつくろー! < C++踏み込み編 < charとUnicodeとワイド文字をごっちゃにしないために その4 charとUnicodeとワイド文字をごっちゃにしないために Visual Studio 2003あたりになってから、ちらほらと出てきたのが「Unicode」や「ワイド文字」という言葉。DirectXでもたびたびこれに苦しめられたりします。どうも世の中従来の1バイト文字からUnicodeへ過渡しそうな気配です。これらの文字の仕様については色々なサイトや辞書に詳しく説明されています。しかし、しっかりまとめないとやっぱり混乱してしまうもんなんです。「バイト文字をUnicodeに変換するのと、マルチバイト文字をワイド文字に変換するのは何が違うのか?」と聞かれたときに、すっと回答できますでしょうか?できる方はすばらしい。迷った方も大丈夫。世の中そんなもんです。 ここでは、c

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    urza358
    urza358 2011/01/17
  • 標準入出力

    第5章 標準入出力関数(1) 標準入力(キーボードからの入力)、標準出力(画面への出力)を行う標準ライブラリ関数のうち、特に使用頻度の高い、printf() と scanf() について説明します。 尚、その他の標準入出力関数については 第8章 をご参照下さい。 標準入出力関数を使用するには、#include <stdio.h> が必要です。 「#include」については「18-2.#include」を参照してください。 5-1.printf() 画面に書式付きで出力します。 printf() の f は "format"(書式) の f です。printf()は書式指定を行うことにより、同じ「65」という数値でも、10進数で出力したり、文字で出力したりというように出力形式を変えることが出来ます。 (書き方)

    urza358
    urza358 2011/01/17
  • 9.プリプロセッサとメイクファイル C言語入門 Cプロダクション

    大変ご無沙汰です。約1年半ぶりの更新です。 昨日、ブログを設置しているサーバでOSのアップデートに問題が発生したため、これを機に新サーバ・新OSに乗り換えることにしました。 現在のブログがマルチサイトのため、そのままでは新サーバの構築に苦戦すると予想されるため、他のブログの記事を統合しました。 統合内容は以下の通りです。 ・C-Production ・・・ メインサイトのため、他のブログを吸収して継続。 ・♪8thNote♪ ・・・ メインサイトに統合済みだったので、削除。 ・モバイル魂 ・・・ メインサイトに記事を引き継ぎ、並行稼働中。 ・無線のドキュメント ・・・ もともと閉鎖予定だったので、そのまま削除 外部SNSのアカウントについてはそのまま継続します。 今後ともよろしくお願いします。

  • C/C++対応自動テストツール「Parasoft C++test7.3.2」販売開始

    今回のバージョンから、ドイツTÜV SÜD社よりIEC 61508準拠のテストツールとして正式に認定された。 「C++test7.3.2」は、動的解析・静的解析を自動化するC/C++言語対応自動テストツール。単体テストおよび、機能テストの作業負荷を軽減し、テストの効率化を支援する。 新機能として、Hew(SuperH RISC engine C/C++ Compiler V9.03)環境へ対応。さらに、静的解析にFDA C++ Phase 1-3、HIS Source Code Metrics、ISO 26262 Recommended Rules、SAMATE Annex A Source Code Weaknessesの4つのルールセットを追加。そのほか、単体テスト機能を拡張し、カバレッジ機能にもステートメントカバレッジの収集が追加された。 対応OSは、Windows 2000/XP/

    C/C++対応自動テストツール「Parasoft C++test7.3.2」販売開始
  • Cの型変換と式

    Cの演算子では演算対象の数値などを明示的、あるいは非明示的に変換することがあります。この仕組みをキチンと理解していないと思った通りの計算結果が出ないことも。今回は、この仕組みを徹底解説します。 前回は、いくつかの演算子と、演算子の優先順位について学びました。演算子を組み合わせて使うことで、さまざまな演算を行ったり、変数の値を変えたりすることができます。 演算子の中には、演算のときにオペランドの型を変換するものがあります。この型の変換の仕組みを知っておくことで、思い通りの計算ができるようになります。逆に、この仕組みを理解していないと、思った通りの計算結果がでずに、悩むことになります。今回は、前半で型変換について学んだあと、後半では演算子とオペランドの組み合わせである式について学びましょう。 型変換 Cでは1つの型ですべての値を表すことができません。整数を表す型だけでも、char、short

    Cの型変換と式
    urza358
    urza358 2010/04/22
  • プログラミングの禁じ手Web版 C言語編(InternetArchiveよりサルベージ) - Akio's Log

    はじめに 昔お世話になったC Magazineの「プログラミングの禁じ手Web版 C言語編」というサイトを、後輩に教えてあげようとしたら、C Magazineの休刊後にドメインが失効してしまったようで、見る事が出来ませんでした。 幸い、InternetArchive(http://www.archive.org/web/web.php) に当時のデータがほぼ残っていたので、無許可ではありますがサルベージして転載させてもらいました。 「C MAGAZINE - プログラミングの禁じ手Web版 C言語編」 元のアドレスはこちら。 http://www.cmagazine.jp/src/kinjite/c/index.html InternetArchive http://web.archive.org/web/20070113222026/http://www.cmagazine.jp/src

    プログラミングの禁じ手Web版 C言語編(InternetArchiveよりサルベージ) - Akio's Log
  • マルチプラットフォームで動作する物理エンジン·Chipmunk MOONGIFT

    物理エンジンを実装したライブラリは多数存在する。なぜにここまで物理エンジンに惹かれるのか。ゲームを作成する場合や、そのような物理現象のシミュレートを行う際に必要なのは分かる。だがそれだけに収まらない楽しさがそこにはある。 C言語で作られたパフォーマンスの高い物理エンジン ピタゴラスイッチを見て面白いと思うあの感覚だ。実際にリアルで行うと同じものを再現するのは難しいが、コンピュータ上であれば幾らでも試すことができる。 今回紹介するオープンソース・ソフトウェアはChipmunk、C言語で書かれた物理エンジンだ。 ChipmunkはC言語で書かれており、Windows/Mac OSX/Linuxなどマルチプラットフォームで動作する。さらにRuby向けの拡張も提供されている。様々な場面で利用できるだろう。特に2Dのゲーム制作を目的としているようだ。 これが非常に良くできている! デモも幾つかあるが

    マルチプラットフォームで動作する物理エンジン·Chipmunk MOONGIFT
  • C言語講座

    事項の解説 下記のリンク先では、C言語の基事項について解説してあります。 プログラムの構成、コンパイル、実行 演習中の印刷 Emacs上での文字コードの変更 変数 条件式 - if - 繰り返し処理 - for, while- 関数 演習問題 下記のリンク先では、C言語の演習問題が載せてあります。 頑張って習得して下さい。 変数 条件式 - if - 繰り返し処理 - for - 繰り返し処理 - while - 配列 条件式 - switch - 構造体1 構造体2 ポインタ1 ポインタ2 関数1 関数2 ファイル入出力1 ファイル入出力2 確認問題:変数、条件文、繰り返し文 [確認問題の解答] C言語による画像処理 (植生指数の計算) 須﨑純一 京都大学大学院 工学研究科社会基盤工学専攻 空間情報学講座 [須﨑純一ホームページ]

  • OpenGLの基礎

    OpenGLは,3次元グラフィクスプログラミングにつかわれる標準的なライブラリです. ライブラリとは,プログラムの部品セットであるといえます. ライブラリを利用することで,自分で0から書かなくても, ライブラリが提供する部品を組み合わせることでプログラムを作成することができます. ここでは,OpenGLの基礎を説明します. OpenGLの概要 Ruby/OpenGL OpenGLプログラムの基的な構造 イベント,コールバック,イベントループ 2次元図形の描画 図形プリミティブ 属性 2次元ビューの設定 ビューポート OpenGLの概要 OpenGLは,3次元グラフィクスプログラミングにつかわれる標準的なライブラリで,SGI(Silicon Graphics, Inc.)がGLという同社のコンピュータ専用のグラフィクスライブラリをもとに開発したものです. OpenGL以外でよく用いられる3

  • DXライブラリ置き場 HOME

    DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用の2Dゲームライブラリです。(使用する際はC言語の知識だけで大丈夫です) これによってプログラマーゲーム質的なプログラムに専念することが出来ます。かなり格的なソフト制作からお遊び程度のミニゲーム制作まで幅広くカバーしています! プログラムソースも公開していますので気兼ねなく使用してください。 <しばらくCM> 14歳からはじめる C言語わくわくゲームプログラミング教室 Visual Studio 2008編(左) と 14歳からはじめる C++わくわくゲームプログラミング教室(右) 著者はどちらも 大槻 有一郎様 ゲームプログラムの入門書です C言語版は、初めてC言語に触れる方や、これ

  • インクリメント演算子の謎

    インクリメント演算子は、どうも言語によってかなり扱いが違うことに気がついた。 後置インクリメントまず、実行しようと思うコードの擬似表現は以下。このコードを実行すると、どのような結果が出力されるだろうか? まずは頭の中で考えてほしい。 なお、「a++」の部分は「後置インクリメント」と呼ばれ、式自体の評価値はインクリメント前の値になる。つまり、「a++」の評価値はいずれの言語でも1になる。 a = 1; print (a + a++); 計算し終わっただろうか。では上記コードを各種言語で実行した場合の結果を見てみよう。 C言語の場合 http://codepad.org/VXw0Uo2IJavaScriptの場合 ↓をアドレスバーに貼り付けてEnterで実行できる javascript:var a=1; alert(a + a++);PHPの場合 http://codepad.org/Ho7p

    インクリメント演算子の謎
  • 工学ナビ - 記事一覧

    攻殻機動隊」「電脳コイル」の世界を実現! - ARToolKitを使った拡張現実感プログラミング ARToolKit は拡張現実感アプリケーションの実装を手助けするC/C++用のライブラリです. ARToolKit の導入,ツールの使い方,プログラミングの方法について詳しく解説します. 音声認識ソフトを作ろう 無償で使える音声認識用ライブラリ「Speech SDK」に関するノウハウ. Speech SDK のインストール方法,サンプルプログラムのいじり方,音声認識エンジンのカスタマイズの仕方などについて解説します.

  • 2NT -無料ブログ 無料ホームページ 等-