#author("2024-11-13T15:41:51+09:00","default:okazaki","okazaki")
#author("2024-11-13T15:42:00+09:00","default:okazaki","okazaki")
#menu(howto/MenuBar)

* howto/C言語 [#l28cc607]
#contents

** 一行メモ [#d6a23889]
- C++, C言語 リファレンス https://ja.cppreference.com/ --  &new{2024-06-25 (火) 13:37:31};
- 不可解な実行時エラーの例 --  &new{2024-11-13 (水) 15:33:49};
 C90規格(-std=c90)だと、double myfunc( int i, struct hoge* g ) があるとき、
 この関数を前方宣言しないまま使うと、コンパイラは int myfunc(int i, ...)
 のような int型を返す、可変引数の関数として扱われるようで、警告やエラーは出さない。
 C99規格では警告してくれる。
   myfunc(int narg, ...)を myfunc( int i, struct hoge* g )と思って作っていると、
   myfunc(int i, ...)を myfunc( int i, struct hoge* g )と思って作っていると、
 実行結果は実に不可解な結果を与える。

#comment

** int, longなどのサイズ [#r86d491f]

|                  |CENTER:C99言語規格        |CENTER:LP64データモデル |CENTER:LLP64データモデル |h
|CENTER: char      | 1byte以上、int以下       |CENTER: --              |CENTER: --               |
|CENTER: int       | 2byte以上                |CENTER: 4byte           |CENTER: 4byte            |
|CENTER: long      | 4byte以上、long long以下 |CENTER: 8byte           |CENTER: 4byte            |
|CENTER: long long | 8byte以上                |CENTER: --              |CENTER: --               |
|CENTER: ポインタ  | --                       |CENTER: 8byte           |CENTER: 8byte            |
|CENTER: 実装例    | --                       |CENTER: Linuxなど       |CENTER: Windowsなど      |

ref. [1] [[C++言語でのint型とlong型とlong long型の違いについて>https://ja.stackoverflow.com/questions/45529/c%E8%A8%80%E8%AA%9E%E3%81%A7%E3%81%AEint%E5%9E%8B%E3%81%A8long%E5%9E%8B%E3%81%A8long-long%E5%9E%8B%E3%81%AE%E9%81%95%E3%81%84%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6]] 
[2] [[cppreference.com 基本型>https://ja.cppreference.com/w/cpp/language/types]]


** 整数のオーバーフローについて知っておく事柄 [#t12b139b]
- INT32-C. 符号付き整数演算がオーバーフローを引き起こさないことを保証する https://www.jpcert.or.jp/sc-rules/c-int32-c.html
- INT02-C. 整数変換のルールを理解する https://www.jpcert.or.jp/sc-rules/c-int02-c.html
- Better C - Goと整数 #golang https://qiita.com/sonatard/items/464a9d45c689386edfe1


** 多次元の配列とポインタとメモリ領域 [#veeaa7ed]
#ref(多次元配列C言語.jpg,left,100%,nowrap)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS