C言語の温故知新
2082 ワード
C言語note
-v0.1 2020.8.12 Sherlock initマクロ
マクロパラメータかマクロの展開ルールかは、マクロが単純なマクロであれば中のマクロを展開し、外のマクロを順次展開することです.
マクロの実装が##または#を使用するマクロである場合、##または#のルールを直接使用します.
例えば、以下のtest case 4から「19」への出力を行うには、case 5のような書き方を中間回転させる必要がある.
https://www.cnblogs.com/alantu2018/p/8465911.html自動データ型変換 各種カットオフデータ
floatタイプは比較的等しくなく、等しくない
sizeof()はunsigned intを返します
符号数と符号数なしの演算、割り当て:https://akaedu.github.io/book/ch15s03.html
符号付き右シフト、符号付きビット右シフトサイズ端およびビットドメイン http://mjfrazer.org/mjfrazer/bitfields/
この例では、コードを書く場合、特に下位ハードウェアレジスタの動作に関する駆動コードについて、ビットドメインをできるだけ使用しない理由を説明します.なぜなら,サイズ端の異なるシステムではビットドメインの表現方法が異なるからである.フォーマット印刷 printf%n:出力された文字数(次の行の出力をユーザーが位置合わせするのに役立ちます)ロングジャンプ setjmp, longjmp: https://www.cnblogs.com/hazir/p/c_setjmp_longjmp.html 可変パラメータ関数 https://www.cnblogs.com/cpoint/p/3368993.html realloc
https://www.cnblogs.com/zhaoyl/p/3954232.html2 D配列とポインタ constポインタ const char ** p; char * const * p; char ** const p; それぞれ*p、*p、pは定数です.doubleタイプのストレージフォーマット …
-v0.1 2020.8.12 Sherlock init
##
前後をつなぐ記号#
記号を文字列化するマクロパラメータかマクロの展開ルールかは、マクロが単純なマクロであれば中のマクロを展開し、外のマクロを順次展開することです.
マクロの実装が##または#を使用するマクロである場合、##または#のルールを直接使用します.
例えば、以下のtest case 4から「19」への出力を行うには、case 5のような書き方を中間回転させる必要がある.
#include
#define TEST(a, b) a##b
#define STR(a) #a
#define A 1000
#define ADD(a, b) ((a) + (b))
#define _TEST(a, b) TEST(a, b)
#define _STR(a) STR(a)
int main()
{
printf("test 1: %d
", TEST(1, 5));
printf("test 2: %s
", STR(just_test));
printf("test 3: %d
", ADD(A, A));
/* test case 4 */
printf("test 4: %s
", STR(TEST(1, 9)));
/* test case 5 */
printf("test 5: %s
", _STR(TEST(1, 9)));
return 0;
}
:
xxx@kllp05:~/tests/c_note$ ./a.out
test 1: 15
test 2: just_test
test 3: 2000
test 4: TEST(1, 9)
test 5: 19
https://www.cnblogs.com/alantu2018/p/8465911.html
floatタイプは比較的等しくなく、等しくない
sizeof()はunsigned intを返します
符号数と符号数なしの演算、割り当て:https://akaedu.github.io/book/ch15s03.html
符号付き右シフト、符号付きビット右シフト
この例では、コードを書く場合、特に下位ハードウェアレジスタの動作に関する駆動コードについて、ビットドメインをできるだけ使用しない理由を説明します.なぜなら,サイズ端の異なるシステムではビットドメインの表現方法が異なるからである.
#include
int main()
{
int num;
printf("123456:%n
", &num);
printf("%*c %d
", num, ' ', 123);
printf("%*c %d
", num, ' ', 456);
return 0;
}
:
xxx@kllp05:~/tests/c_note$ ./a.out
123456:
123
456
https://www.cnblogs.com/zhaoyl/p/3954232.html