Skip to content
This repository was archived by the owner on Aug 18, 2025. It is now read-only.

Commit 9df798c

Browse files
committed
新增位运算符高级测试,涵盖长整型、混合类型、移位运算边界及运算优先级的多种测试案例,增强了位运算的测试覆盖率。
1 parent d556f99 commit 9df798c

File tree

2 files changed

+88
-17
lines changed

2 files changed

+88
-17
lines changed

test_bitwise_advanced.cn

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// CodeNothing v0.7.2 位运算符高级测试
2+
using lib <io>;
3+
using ns std;
4+
5+
fn main(): int {
6+
std::println("=== CodeNothing v0.7.2 位运算符高级测试 ===");
7+
8+
// 测试1: 长整型位运算
9+
std::println("=== 测试1: 长整型位运算 ===");
10+
long_a : long = 123456789;
11+
long_b : long = 987654321;
12+
13+
std::println("long_a = " + long_a);
14+
std::println("long_b = " + long_b);
15+
16+
long_and : long = long_a & long_b;
17+
std::println("long_a & long_b = " + long_and);
18+
19+
long_or : long = long_a | long_b;
20+
std::println("long_a | long_b = " + long_or);
21+
22+
long_xor : long = long_a ^ long_b;
23+
std::println("long_a ^ long_b = " + long_xor);
24+
25+
// 测试2: 混合类型位运算
26+
std::println("=== 测试2: 混合类型位运算 ===");
27+
int_val : int = 255;
28+
long_val : long = 65535;
29+
30+
mixed_and : long = int_val & long_val;
31+
std::println("int & long = " + mixed_and);
32+
33+
mixed_or : long = int_val | long_val;
34+
std::println("int | long = " + mixed_or);
35+
36+
// 测试3: 移位运算边界测试
37+
std::println("=== 测试3: 移位运算边界测试 ===");
38+
test_val : int = 1;
39+
40+
shift_1 : int = test_val << 1;
41+
std::println("1 << 1 = " + shift_1);
42+
43+
shift_8 : int = test_val << 8;
44+
std::println("1 << 8 = " + shift_8);
45+
46+
shift_16 : int = test_val << 16;
47+
std::println("1 << 16 = " + shift_16);
48+
49+
// 测试4: 位运算优先级
50+
std::println("=== 测试4: 位运算优先级 ===");
51+
a : int = 8;
52+
b : int = 4;
53+
c : int = 2;
54+
55+
// 测试 & 和 | 的优先级
56+
result1 : int = a | b & c; // 应该是 a | (b & c) = 8 | 0 = 8
57+
std::println("8 | 4 & 2 = " + result1 + " (应该是 8)");
58+
59+
// 测试 ^ 和 & 的优先级
60+
result2 : int = a ^ b & c; // 应该是 a ^ (b & c) = 8 ^ 0 = 8
61+
std::println("8 ^ 4 & 2 = " + result2 + " (应该是 8)");
62+
63+
// 测试移位和算术运算的优先级
64+
result3 : int = a + b << 1; // 应该是 (a + b) << 1 = 12 << 1 = 24
65+
std::println("8 + 4 << 1 = " + result3 + " (应该是 24)");
66+
67+
std::println("位运算符高级测试完成!");
68+
return 0;
69+
};

test_bitwise_operators.cn

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,58 @@
11
// CodeNothing v0.7.2 位运算符测试
2+
using lib <io>;
3+
using ns std;
24

35
fn main(): int {
4-
println("=== CodeNothing v0.7.2 位运算符测试 ===");
6+
std::println("=== CodeNothing v0.7.2 位运算符测试 ===");
57

68
// 测试1: 基本位运算
7-
println("=== 测试1: 基本位运算 ===");
9+
std::println("=== 测试1: 基本位运算 ===");
810
a : int = 12; // 1100 (二进制)
911
b : int = 10; // 1010 (二进制)
1012

11-
println("a = " + a + " (1100 二进制)");
12-
println("b = " + b + " (1010 二进制)");
13+
std::println("a = " + a + " (1100 二进制)");
14+
std::println("b = " + b + " (1010 二进制)");
1315

1416
// 按位与
1517
and_result : int = a & b; // 1000 = 8
16-
println("a & b = " + and_result + " (应该是 8)");
18+
std::println("a & b = " + and_result + " (应该是 8)");
1719

1820
// 按位或
1921
or_result : int = a | b; // 1110 = 14
20-
println("a | b = " + or_result + " (应该是 14)");
22+
std::println("a | b = " + or_result + " (应该是 14)");
2123

2224
// 按位异或
2325
xor_result : int = a ^ b; // 0110 = 6
24-
println("a ^ b = " + xor_result + " (应该是 6)");
26+
std::println("a ^ b = " + xor_result + " (应该是 6)");
2527

2628
// 测试2: 移位运算
27-
println("=== 测试2: 移位运算 ===");
29+
std::println("=== 测试2: 移位运算 ===");
2830
x : int = 5; // 101 (二进制)
29-
println("x = " + x + " (101 二进制)");
31+
std::println("x = " + x + " (101 二进制)");
3032

3133
// 左移
3234
left_shift : int = x << 2; // 10100 = 20
33-
println("x << 2 = " + left_shift + " (应该是 20)");
35+
std::println("x << 2 = " + left_shift + " (应该是 20)");
3436

3537
// 右移
3638
right_shift : int = x >> 1; // 10 = 2
37-
println("x >> 1 = " + right_shift + " (应该是 2)");
39+
std::println("x >> 1 = " + right_shift + " (应该是 2)");
3840

3941
// 测试3: 复杂表达式
40-
println("=== 测试3: 复杂表达式 ===");
42+
std::println("=== 测试3: 复杂表达式 ===");
4143
complex : int = (a & b) | (x << 1); // 8 | 10 = 10
42-
println("(a & b) | (x << 1) = " + complex + " (应该是 10)");
44+
std::println("(a & b) | (x << 1) = " + complex + " (应该是 10)");
4345

4446
complex2 : int = (a ^ b) & (x >> 1); // 6 & 2 = 2
45-
println("(a ^ b) & (x >> 1) = " + complex2 + " (应该是 2)");
47+
std::println("(a ^ b) & (x >> 1) = " + complex2 + " (应该是 2)");
4648

4749
// 测试4: Auto类型推断与位运算
48-
println("=== 测试4: Auto类型推断与位运算 ===");
50+
std::println("=== 测试4: Auto类型推断与位运算 ===");
4951
auto_a : Auto = 15;
5052
auto_b : Auto = 7;
5153
auto_result : Auto = auto_a & auto_b;
52-
println("Auto变量位运算: " + auto_a + " & " + auto_b + " = " + auto_result + " (应该是 7)");
54+
std::println("Auto变量位运算: " + auto_a + " & " + auto_b + " = " + auto_result + " (应该是 7)");
5355

54-
println("位运算符测试完成!");
56+
std::println("位运算符测试完成!");
5557
return 0;
5658
};

0 commit comments

Comments
 (0)