c99允許你對結構體中指定的變數初始化,如
struct
foo ;
foo foo = ;
這其中x會預設初始化為
0指定初始化也可適用於陣列,
如下面三個等價的陣列定義
int a[5
] = ;
int
a = ;
int a[5
] = ;
限定詞restricted用於限定乙個指標(如名
,告訴編譯器該指標的記憶體訪問在任何情況下都只能通過該指標進行
,其餘指向無效.如
int f(
const
int*
restrict
x, int
* y)
會被編譯器優化為
int f(
const
int*
restrict
x, int
* y)
void f(
int
a[static
10])
傳遞給f()
的指標如果為
null
或者小於
10編譯器會
warning!
又如void f(
int
a[const
])
中a不可被修改。
使用x maroc(
編譯器會在
compile time
選擇適當的形式
#define cbrt(x) _generic((x), \
long double: cbrtl, \
default: cbrt, \
float: cbrtf \
)(x)
預設形式為cbrt(),
如果實參為
float
就會被替換為
cbrtf(),etc.
case語句可以出現在
if-else
結構和迴圈結構中
switch (a)
else case 3:
}break;
case 4:
// ...
break; }
#include
int add(int a,int b)
int main() 用
printf()返回值實現
,也可以使用
bitwise
實現注:printf()
返回乙個int值,表示被列印的字元數
static void foo (void)
static void bar (void)
int main (void)
#include
void main()
("dayum!\n");
#text in f
ragment.c
這我也無力吐槽
..switch(c)
c屬於a-z字元時執行
doa();
屬於1-5
時執行dob();
main;
作者沒有提到編譯環境,
雖然我的編譯器會報錯
..a [ i ] == * (a + i) == * (i + a) == i [ a ];
下表左右都是等價的
於是就出現這樣的
(:亂碼
code
!e() ??!??! c();
#include
int
main()
} c++ switch-case結構中的
default
可以被任何標籤替換
,如上面的
abc1
奇怪的等價
# 1 "1.c"
# 1 ""
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "" 2
# 1 "1.c"
int main()
等價於#ifdef some_macro
void foo (){}
#endif
int main()
且都能編譯通過(其實就是預處理器- -)
c語言中一些公用的方法
這段由於學業的原因,最近與c有所接觸,面向過程與物件導向還是有點區別。但是方法還是可以寫成公用的.下面幾個函式感覺用的比較經常點,就貼上來了.25 子串判斷 引數 sourcestr源串,desstr判斷串 int stringjudge char sourcestr,char desstr ret...
C語言中一些基本問題
其中的u為unsigned,l為long,f為float c語言中常量的默情況 整形預設為有符號int 浮點型預設為double 如果整形常量大小超出int,預設自然就為long int 如果需要無符號整形常量的話就可以在常量後面加u或是u,如0u或是0u,同理可以在常量後面加ul或ul表示無符號長...
C語言中一些知識點
1.學程式設計 找 讀 改 寫 少看書。但少看不是不看,看一本書要限制在一天內。任務是通讀書中主要的概念,明白大致是幹什麼用的,形成乙個大概的框架 然後一周內乾掉書中全部 不理解再瀏覽書中相關章節,注意是瀏覽。或者刷部落格。實在刷不懂,可以先刷後面,待日後重新刷 因為書中 有些部分可能出自後面的章節...