整数
在Felix,我们有一个 int 它的值是接近零的小整数。
类型
这种类型是通过在库中通过C++来提升它来定义的:
type int = "int";
因此,所表示的整数的确切范围由底层C++实现决定。
直接常量
类型的非负值 int 可以这样写为十进制数字序列:
0
1
23
42
也可以在任意两个数字之间加下划线或单引号:
123_456
123'456
否定
没有负整数文本。但是,您可以使用前缀否定运算符(短划线字符)来找到整数的负数 - ,或函数 neg :
-1
neg 1
中缀运算符
整数支持简单公式:
(12 + 4 - 7) * 3 / 6 % 2
在这里, + 是加法,中缀 - 是减法, * 是乘法, / 是除法,而且 % 除法后的余数。
商余号
当涉及到负数时,除法和余数需要一些解释。C中除法的商,因此Felix,总是向零舍入,因此:
-3/2 == -1
如果两个操作数都为负或都为非负,则商为非负,否则为非正。
剩下的部分必须符合公式:
dividend == quotient * divisor + remainder
所以我们
remainder == dividend - quotient * divisor
因此,当且仅当股息为非负时,余数为非负,否则为非正。
比较
我们提供C的常用比较: == 是平等, != 是不平等, < 小于, > 大于, <= 小于或等于,并且 >= 大于或等于。
比较的结果是 bool 类型。
恒定折叠
如果您编写的公式只包含 int ,Felix编译器将根据数学规则执行计算,使用更大的整数表示。最后,结果将被转换回较小的 int 表示。
如果计算结果超过编译器内部表示的大小,或者,对于 int ,结果不确定。
除以零
如果除法或余数运算的除数为零,编译器可能会中止编译,也可能会将问题推迟到运行时。如果问题被推迟并执行了代码,则将引发异常并中止程序。但是,代码可能无法执行。
越界值
如果在运行时执行的计算结果超出边界,则结果是不确定的。
摘要:整数比较
算符 |
类型 |
句法 |
语义 |
---|---|---|---|
= |
int*int->bool |
中缀 |
平等 |
!= |
int*int->bool |
中缀 |
不相等 |
<= |
int*int->bool |
中缀 |
小于等于 |
< |
int*int->bool |
中缀 |
更少 |
> |
int*int->bool |
中缀 |
大于或等于 |
> |
int*int->bool |
中缀 |
更大的 |
摘要:整数运算
算符 |
类型 |
句法 |
语义 |
---|---|---|---|
+ |
int*int->int |
中缀 |
加法 |
- |
int*int->int |
中缀 |
减法 |
* |
int*int->int |
中缀 |
乘法 |
/ |
int*int->int |
中缀 |
除法 |
% |
int*int->int |
中缀 |
余数 |
- |
内景->内景 |
前缀 |
否定 |
阴性 |
内景->内景 |
前缀 |
否定 |
防抱死制动系统 |
内景->内景 |
前缀 |
绝对值 |
更多整数
Felix有更多的整数类型。参见参考手册:
https://felix.readthedocs.io/en/latest/integers.html
有关详细信息。