マガジンのカバー画像

C言語

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

2024年5月の記事一覧

C言語 間違い探し マニアック編 「機能 = 0」はどこへ消えた?

C言語 間違い探し マニアック編 「機能 = 0」はどこへ消えた?

「上級編」にしようかと思ったけど、「上級編か?」と思い直し「マニアック編」とした。
一番の理由は「環境依存する」ということである。
故に、コードをコピー&ペーストして実行しても同じ現象が発生しない可能性がある。

更に、C言語のあまり見慣れない仕様も関係している。私はこの仕様を利用したコードをみたことがない(と言っても井の中の蛙であるが)。

先日のC言語記事にコメントいただいた内容である。

もっとみる
カーニハンCを読む 第1章 やさしい入門(2)

カーニハンCを読む 第1章 やさしい入門(2)

前回の続き。
前回?
前回っていつだっけ?

変数の宣言は関数の初めにそうなのよ。関数の初めに宣言しておかなければならなかったのよ。かつては。ところが、今ではどこで宣言してもOK………なのか?
JISX3010 P.70 「6.7 宣言」の制約にはそのようなものがなかった。
clang も、次のコードに対して何ら警告を発しない。

void test1(){ int i = 3;

もっとみる
C言語 間違い探し 答え編

C言語 間違い探し 答え編

こちらの記事の答えである。

そもそも、いったい何を間違ったのか再掲すると、例外を引き起こしたのはこのコードである。
#include <stdio.h>int main(){ const static char* name[] = { "aaa" "bbb" "ccc"

もっとみる
C言語 間違い探し

C言語 間違い探し

今日出くわしたバグである。
できたてのホヤホヤだ。
#include <stdio.h>int main(){ const static char* name[] = { "aaa" "bbb" "ccc" }; printf("%s\n", name

もっとみる
カーニハンCを読む 第1章 やさしい入門(1)

カーニハンCを読む 第1章 やさしい入門(1)

先日、演算子の優先度について改めてカーニハンCを読んでみたが、なかなか懐かしくもあってもう少し読んでみようかという気になった。

本の初っぱなが『第1章 やさしい入門』である。

第2章以降は次のように言語の規約に準じた記載になっているが、まずはプログラミングに親しむようにと『やさしい入門』が先にきている。

第1章 やさしい入門
第2章 データ型・演算子・式
第3章 制御の流れ
第4章 関数とプ

もっとみる
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言語に関する本は数あれど、本書が元祖だと言って差し支えない(と思う)。

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

もっとみる