[問題] Sequence Point
最近剛好看到Sequence Point這個名詞, 看了一些相關資料, 有人提到 C99 draft
standard上的定義, 其中有一條如下:
Annex C
—The end of a full expression:
an initializer (6.7.8);
the expression in an expression statement (6.8.3);
the controlling expression of a selection statement (if or switch) (6.8.4);
the controlling expression of a while or do statement (6.8.5);
each of the expressions of a for statement (6.8.5.3);
the expression in a return statement(6.8.6.4).
上面幾條都蠻好理解的, 除了第二條!!
用簡單的數字計算來說, expression在C99提到的是由operator跟operand所組成的,
而且expression statment = expression ";" <--就是加個分號啦~~
所以以下的例子:
A = A + i++;
i++ 這個算不算是個expression?? 而且它是不是一個Sequence Point??
在網路上查到的資料是說它不是Sequence Point, 上面那個例子的sequence point在分號,
所以更新i的值的動作, 到分號之前的任何一個時間點都允許發生.......
但是呢 就我看來 上面那個例子裡的 i++ 就是符合Sequence Point的定義阿!!! :
the expression in an expression statement (6.8.3);
請問這邊該要如何理解跟解釋它呢?? 搞的頭好痛.......
麻煩大家了.....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.152.159
※ 編輯: saladim 來自: 114.37.152.159 (10/25 14:56)
※ 編輯: saladim 來自: 114.37.152.159 (10/25 14:58)
※ 編輯: saladim 來自: 114.37.152.159 (10/25 14:59)
推
10/25 15:20, , 1F
10/25 15:20, 1F
→
10/25 15:21, , 2F
10/25 15:21, 2F
→
10/25 16:07, , 3F
10/25 16:07, 3F
→
10/25 16:08, , 4F
10/25 16:08, 4F
→
10/25 16:12, , 5F
10/25 16:12, 5F
推
10/25 17:23, , 6F
10/25 17:23, 6F
→
10/25 17:23, , 7F
10/25 17:23, 7F
→
10/26 06:46, , 8F
10/26 06:46, 8F
→
10/26 06:50, , 9F
10/26 06:50, 9F
推
10/26 07:05, , 10F
10/26 07:05, 10F
→
10/26 07:05, , 11F
10/26 07:05, 11F
→
10/26 07:14, , 12F
10/26 07:14, 12F
→
10/26 07:15, , 13F
10/26 07:15, 13F
※ 編輯: saladim 來自: 114.37.152.159 (10/26 07:16)
→
10/26 07:17, , 14F
10/26 07:17, 14F
→
10/26 07:18, , 15F
10/26 07:18, 15F
→
10/26 07:19, , 16F
10/26 07:19, 16F
→
10/26 07:21, , 17F
10/26 07:21, 17F
→
10/26 07:21, , 18F
10/26 07:21, 18F
→
10/26 07:22, , 19F
10/26 07:22, 19F
→
10/26 07:23, , 20F
10/26 07:23, 20F
→
10/26 07:24, , 21F
10/26 07:24, 21F
※ 編輯: saladim 來自: 114.37.152.159 (10/26 07:26)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章