C 語言的逗號

因為只能和 C語言裝熟,只好看書看能不能裝更熟點。感謝成大同學推薦的書本:C Programming: A Modern Approach。今天看到逗號的用法,手癢來用一下。

簡單來說,,就是把expression)串在一起,然後回傳最後一個expression的值。注意的是expression是compiler專有名詞,自己看連結,不解釋。

知道這個特性,當然來個小實驗。照慣例還是要講一下測試環境。

$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:    14.04
Codename:    trusty

接下來寫個小程式:

  • comma.c
#include <stdio.h>
int main(int argc, char **argv)
{
    int i = 0;
    int j = 10;

    return -1, i + j;
}

程式太簡單,懶得寫Makefile,直接make:

$ make comma
cc     comma.c   -o comma

接下來就是驗收

$ ./comma
$ echo $?
10

接下來要問問題時間

  • 為啥要這樣幹?
  • 這個要用在這什麼地方?

先回答第一個問題,就是要把一堆expression擠到被認為是一個expression。有了這樣的想法後,很多語法會只有一個express,如if, for, while,這時候想要在裡面多做事想得不得了的時候就可以用,,不過和條件有關的情況下,記得注意僅回傳最後一個expression的特色。

題外話,這個,目前我印象中除了變數宣告和for以外,只看過一次,那次看到讓我有點反應不過來,感覺單純只是想省掉{}而已。