マガジンのカバー画像

C言語

58
C言語に関するあれこれ
運営しているクリエイター

記事一覧

JISX3010を読む 日本語がムズイんですけど

JISX3010を読む 日本語がムズイんですけど

わりとシツコイ質です。
JISX3010の記述も気になってくるわけで。

国際標準化機構(ISO)の日本語版がJISなのだそうだ。最近はC言語を書いていてもほとんど同じパターンの書き方しかしないので、わざわざ規約を紐解くこともない。久しぶりに読んでみたら面白いやら唸るやら首を傾げるやらという有り様である。

とにかく。

日本語がよくわからへんねん…

JISXには次のような記載があるよくわからな

もっとみる
カーニハンCを読む ついでにJISXも読む 優先度と評価順序 多分わかったんじゃないか劇場

カーニハンCを読む ついでにJISXも読む 優先度と評価順序 多分わかったんじゃないか劇場

先日来より、C言語の演算子の優先順位でバタバタしていたんだが、kznさんから「JISを読んでみたら?」とコメントいただいて、JISで「優先」を検索してうんうん唸っていたら、ふと視界が開けた気がする。
だからネットって面白い。

kznさんから教えていただいたJISはこちら。

私のバタバタ記事はこちら。

C言語の「++(後置)」は優先順位が高いのであるC言語のインクリメント演算子である「++(後

もっとみる
カーニハンCを読む 2.12 優先度と評価順序

カーニハンCを読む 2.12 優先度と評価順序

カーニハンCというのは、次の書籍のことである。

プログラミング言語C
B.W.カーニハン、D.M.リッチー著 石田晴久訳

先日書いた記事で演算子の優先順位等々についてなんだかモヤモヤしたので、元祖を引っ張り出してきた次第である。カーニハンCは、私がC言語を始めた頃はバイブルと言われた。C言語に関する本は数あれど、本書が元祖だと言って差し支えない(と思う)。

-----------------

もっとみる
だからCってやつは *p++

だからCってやつは *p++

先日書いたC言語の記事で次のようなコードが出てきた。

*p++

こんな書き方ができるのはC言語だけじゃね?
と思うくらいC言語的なコードである。

私はこのコードが非常に苦手で理解に苦しむんだが、さらには環境依存もしそうであって今までは書いたことがない。主に組み込みの開発をやってきて、たまにCPUが変更になるようなこともあり、その時には往々にしてコンパイラも変わるしということで、どんなコンパイ

もっとみる

遊月さんのC言語と遊ぶ strchr

こちらの記事がきっかけで。
C言語を盛り上げるためにも、たくさんの記事を書きましょう!

そんでもって、ちょっと変えてみたわけです。

const char* c_strchr(const char* s, int ch) { for (;;) { if (*s == '\0') { return NULL; } if (*s == (char)ch) {

もっとみる
私がC言語を好きな理由 ポインタ変数が必要なデータ構造って?

私がC言語を好きな理由 ポインタ変数が必要なデータ構造って?

前回の続きである。

その前回において、

ポインタを持たないプログラミング言語でもポインタは使っているはずだ

と書いた。ポインタを使った方がシンプルで高速で汎用的になる構造というのがある。が、前回はそれを書かなかった。今回はそれを書いてみようかと思う。

例えば、配列例えば、ここに1つの配列があるとする。

char data[20] = {0, 4, 7, 8, 13, 14, 26};

もっとみる
私がC言語を好きな理由

私がC言語を好きな理由

私がC言語を好きな理由。

ポインタ変数があるから

これにつきる。
C言語しか使っていなかった当初はわからなかったが、いくつかの言語に触れる都度、ポインタ変数が欲しくなる。やりたいことができない。もどかしいことこの上ない。どうも私は、何か制約があるのが苦手なようである。

ポインタを持たない言語たちjavaにも、VBにも、C#にも、Pythonにもポインタ変数はない。ないのではあるが、ポインタ変

もっとみる
C言語教室 第34回 - 型修飾子あれこれ(回答)

C言語教室 第34回 - 型修飾子あれこれ(回答)

こちらの記事の課題回答です。

なんだか、いきなり第34回まですっとばしてしまった気もするけど。

課題char s[] = “abcdefg”;const char *p = s;char * const q = s;

このとき、pとqで何が違うのかを説明しなさい。

回答p はポインタの先のデータを変更できなくて、
q はポインタそのものを変更できない。

コードで書くとこんな感じ。

in

もっとみる
マージソートプログラムのカバレッジを測定してみた

マージソートプログラムのカバレッジを測定してみた

プログラムを作成すると試験を実施するが、全てのルートを試験できているのかどうかが懸念される。最近ではカバレッジツールも増えてきていて、フリーで使用できるものもある。

とはいうものの、C言語のカバレッジは実は少し難しい。CPUそれぞれのネイティブコードを作成するものだから、マシンコードが実行されたのかどうかを判定しなければならず、CPUに依存するところが多くあるためである。このような状況にあって、

もっとみる
C言語教室 第27回 いろいろなソート(続)(回答提出)(2)

C言語教室 第27回 いろいろなソート(続)(回答提出)(2)

こちらの記事の2回目の回答です。

課題前回は(既に1ヶ月くらい前になりますが)、課題1を提出しました。
今回は、課題2です。

前回のリストをアレンジすればいいのだけど、リストと違って文字列配列は繋ぎかえが容易ではない。

(1)いったん別の配列にマージして、
(2)マージが完了したら元の配列にコピーして戻す

という手順を取らざるを得ない・・・かな。

ソースコード#include <stdi

もっとみる
C言語教室 第27回 いろいろなソート(続)(回答提出)(1)

C言語教室 第27回 いろいろなソート(続)(回答提出)(1)

こちらの記事の回答です。

今回、できたのは課題1のみ。

タイトルにある、(続)がついて、さらに(1)ってなんなんだという感じですけど、「いろいろなソート」はkznさんが既に記事を書いていらっしゃって今回はその続編なので(続)です。リンク先の記事には課題が2つ、演習が1つあって、私が今回回答したのは課題1だけです。なので(1)ということになりました。

マージソートよりも「Node」のライブラリ

もっとみる
選択ソートって実はこんなのでした!

選択ソートって実はこんなのでした!

間違っていた選択ソート先日来、バブルソートはこんなのだ、選択ソートはあんなのだなどと書いてきましたが、こちらの記事のコメントで遊月さんからご指摘いただきました。

「それって、選択ソートと違うんじゃない?」

そう!
あれは選択ソートではなかったんです!orz

そして正しい選択ソート改めて。
こちらが選択ソートです。
#include <stdio.h>#include <stdlib.h>i

もっとみる
C言語教室 第26回 - いろいろなソート(回答提出)(続)

C言語教室 第26回 - いろいろなソート(回答提出)(続)

【2023/6/6 追記】
このソート記事はイマイチ。
ソートについてはこちらも是非。

先日、こちらの課題を回答しました。

今回は続編です。

昔書いたことがあるソートロジックを今一度書いてみました。

バブルソートと同じく総当たりでチェックしますが、バブルソートと言えるのかどうかわからない。
考え方は単純。

まず一番小さい数値を探して先頭におく。

終われば次に小さい数値を探して2番目にお

もっとみる
C言語教室 第26回 - いろいろなソート(回答提出)

C言語教室 第26回 - いろいろなソート(回答提出)

こちらの課題回答です。

思いっきりサボりまくって、課題記事のコードを流用し、ちょっとだけ修正して終わりました。文字列はどうしようかと悩みに悩んで(笑)、好きな小説からの引用です。古典の名作。

課題記事のコメントで遊月さんも仰っていましたけど、私が把握していたバブルソートもこれとは少し違います。それについてはまた改めて書いてみようかな。

コード#include <stdio.h>void bu

もっとみる