Skip to content

Commit 59029f2

Browse files
committed
Add FAQ about leading zero
1 parent e8d4cc7 commit 59029f2

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

tutorial02/tutorial02.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,4 +225,8 @@ static int lept_parse_value(lept_context* c, lept_value* v) {
225225

226226
因为在做第 1 个练习题时,我希望能 100% 通过测试,方便做重构。另外,使用 `#if 0 ... #endif` 而不使用 `/* ... */`,是因为 C 的注释不支持嵌套(nested),而 `#if ... #endif` 是支持嵌套的。代码中已有注释时,用 `#if 0 ... #endif` 去禁用代码是一个常用技巧,而且可以把 `0` 改为 `1` 去恢复。
227227

228+
2. 科学计数法的指数部分没有对前导零作限制吗?1E012也是合法的吗?
229+
230+
是的,这是合法的。JSON 源自于 JavaScript ([ECMA-262, 3rd edition](http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf)),数字语法取自 JavaScript 的十进位数字的语法(§7.8.3 Numeric Literals)。整数不容许前导零(leading zero),是因为更久的 JavaScript 版本容许以前导零来表示八进位数字,如 `052 == 42`,这种八进位常数表示方式来自于 [C 语言](http://en.cppreference.com/w/c/language/integer_constant)。禁止前导零避免了可能出现的歧义。但是在指数里就不会出现这个问题。多谢 @Smallay 提出及协助解答这个问题。
231+
228232
其他常见问答将会从评论中整理。

0 commit comments

Comments
 (0)