diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-06-08 17:10:31 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-06-08 17:10:31 +0800 |
| commit | 72af0dedf9e18911da65b9a5c4906689e868d9fc (patch) | |
| tree | 2ecbad93f96ab8ad7e26dc02cd02d802f853ab97 /rcc-legacy/tests/functional/63_simple_atoi.sy | |
| parent | 8faf6d290d6703b1775e0ad7a8928a4ebea4b11b (diff) | |
| download | rcc-project-72af0dedf9e18911da65b9a5c4906689e868d9fc.tar.gz rcc-project-72af0dedf9e18911da65b9a5c4906689e868d9fc.tar.xz | |
[legacy] Add functional and performance test suites
Diffstat (limited to 'rcc-legacy/tests/functional/63_simple_atoi.sy')
| -rw-r--r-- | rcc-legacy/tests/functional/63_simple_atoi.sy | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/rcc-legacy/tests/functional/63_simple_atoi.sy b/rcc-legacy/tests/functional/63_simple_atoi.sy new file mode 100644 index 0000000..d9a344a --- /dev/null +++ b/rcc-legacy/tests/functional/63_simple_atoi.sy @@ -0,0 +1,47 @@ +// Simple atoi program +int atoi_(int src[]) { + int s; + s = 0; + int isMinus; + isMinus = 1; + int i; + i = 0; + while(src[i] == 32) { // 跳过空白符 + i = i + 1; + } + + if(src[i] == 43 || src[i] == 45) { + if(src[i] == 45) { + isMinus = -1; + } + i = i + 1; + } else if (src[i] < 48 || src[i] > 57) { + //如果第一位既不是符号也不是数字,直接返回异常值 + s = 2147483647; + return s; + } + + while (src[i] != 0 && src[i] > 47 && src[i] < 58) { + s = s * 10 + src[i] - 48; + i = i + 1; + } + return s * isMinus; +} + +int main () { + int string[500]; + int temp; + temp = 0; + int i; + i = 0; + while (temp != 10) { + temp = getch(); + string[i] = temp; + i = i + 1; + } + string[i] = 0; + i = atoi_(string); + putint(i); + return 0; +} + |
