作业帮 > 综合 > 作业

pascal逻辑运算符与位运算符

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/17 14:51:12
pascal逻辑运算符与位运算符
最近看到一段pascal算法 里面用了and 和 or 运算符 因为我对pascal不熟 所以把这段算法改写成了c调试,也就是把and 和 or改写成了 && 和 || ,刚刚我才发现我弄错了 其实算法的本意是使用位操作符而不是逻辑操作符
pascal里面逻辑操作符与位操作符是一样的 我想知道编译器是怎么判断什么时候使用位操作符而什么时候使用逻辑操作符呢
比如说 在pascal中 255 or 1 c中的 255 & 1 这样结果就是 255
同样也可以解释成c中的 255 && 1 这样的结果便是 1
谁能帮我解释一下pascal是怎么判断or是当成逻辑运算符来处理还是当作位运算符来处理呢?
1L
表达式计算完成之后也是数字
数字也是以变量形式来表示的 也可以说成是表达式吧
希望能把具体的依据发出来
pascal逻辑运算符与位运算符
Pascal中不同类型的相互赋值是不允许的.
例如
声明了
var i:integer; c:char;
(相当于:int i; char c;)
如果有语句
i:=c; (相当于i=c)
则会报错,必须写成
i:=ord(c); 或者 i:=integer(c);
进行数据类型的转换.
所以如果有语句:
if i=c then ...
(相当于 if (i=c) ...)
那么程序同样会报错!
你所说的情况,Pascal会自动判断两边是否为Boolean类型(bool类型),
如果不是则进行按位运算,如果是则执行布尔运算.
例如:
var i,j,n:byte;
(unsinged short int i,j,n;)

n:=i and j;
表示按位运算
var i,j,n:boolean;
(bool i,j,n;)

n:=i and j;
表示逻辑运算.
(虽然可以有i=2 j=1但是它们的逻辑与仍然为真,值为1)