C語言小問題

2021-07-03 06:01:38 字數 919 閱讀 9720

#define max(a,b) ()
於是我開始修改**,檢視各種**反饋的結果。

int a = 10, b = 100;

int x = ;

好吧,我把圓括號給刪除了,於是編譯器給我報錯了。

error: expected expression before 'int'

int _=a, __=b;

^

好吧,不能沒有圓括號,雖然現在還不知道是為啥。。

然後我把圓括號還原後,又在裡面新增了一句話。

int a = 10, b = 100;

int x = ();

然後我發現,編譯不了。

錯誤是:

error: void value

not ignored as

it ought to be

int x = ();

於是編譯通過了。好吧,我應該猜對了,的確是返回了乙個void。

但是我沒有停止我的折騰,於是有了下面的**。

int a = 10, b = 100;

char x = ();

好吧,編譯竟然通過了,於是我不得不用printf檢視x的值了(控制符是%d)。

然後我看到的結果是100,好吧也許是被強制轉換了呢。

於是我大概可以總結了,這是乙個類似於函式的寫法。

大致是編譯器最後乙個語句當做表示式並將它的返回值當做類似於函式的返回值一樣的東西給返回了

一點拙見,如果錯誤,歡迎指正。

好吧,也許我這麼多的折騰最後換回來的一句話就是:lambda表示式。t^t不高興。

以上。

C語言 小問題。

輸入如下 harhar enter 程式段如下 while ch getchar n 程式段的輸出是什麼。我得到的輸出是ibsibs。我的思路是 putchar ch h不變,使用後加1 putchar ch 提前加1,h變成i 迴圈上面的效果,得到的輸出是ibsibs。正確的思路 先輸出乙個字元h...

c語言的小問題

在c語言程式設計中要注意乙個小問題,如果你編寫scanf d n printf d n 這個你輸入幾就輸出幾,毫無疑問。但是現在問題來了?如果scanf d n scanf c m 如果你輸入了3和乙個回車鍵,這個時候m的值就是回車鍵。回車鍵回作為乙個字元輸入到m中的。所以當你輸入了數字,後面又要輸...

C語言的小問題

二 c的基礎語法 來自書本 三 常用自定義函式 複習 與或非 運算 與 運算 gpioa crl 0xffffff0f 4 7位清零 gpioa crl 0x00000040 4 7位設為1.設定相應位置的值左移 右移 將 1 左移 pinpos 位 gpiox bsrr unit32 t 0x01...