pascal逻辑运算符与位运算符
各位好最近看到一段pascal算法里面用了and和or运算符因为我对pascal不熟所以把这段算法改写成了c调试,也就是把and和or改写成了&&和||,刚刚我才发现我弄...
各位好
最近看到一段pascal算法 里面用了and 和 or 运算符 因为我对pascal不熟 所以把这段算法改写成了c调试,也就是把and 和 or改写成了 && 和 || ,刚刚我才发现我弄错了 其实算法的本意是使用位操作符而不是逻辑操作符
我查了一下 pascal里面逻辑操作符与位操作符是一样的 我想知道编译器是怎么判断什么时候使用位操作符而什么时候使用逻辑操作符呢
比如说 在pascal中 255 or 1 可以解释成 c中的 255 & 1 这样结果就是 255
同样也可以解释成c中的 255 && 1 这样的结果便是 1
谁能帮我解释一下pascal是怎么判断or是当成逻辑运算符来处理还是当作位运算符来处理呢?
1L
表达式计算完成之后也是数字
数字也是以变量形式来表示的 也可以说成是表达式吧
希望能把具体的依据发出来 展开
最近看到一段pascal算法 里面用了and 和 or 运算符 因为我对pascal不熟 所以把这段算法改写成了c调试,也就是把and 和 or改写成了 && 和 || ,刚刚我才发现我弄错了 其实算法的本意是使用位操作符而不是逻辑操作符
我查了一下 pascal里面逻辑操作符与位操作符是一样的 我想知道编译器是怎么判断什么时候使用位操作符而什么时候使用逻辑操作符呢
比如说 在pascal中 255 or 1 可以解释成 c中的 255 & 1 这样结果就是 255
同样也可以解释成c中的 255 && 1 这样的结果便是 1
谁能帮我解释一下pascal是怎么判断or是当成逻辑运算符来处理还是当作位运算符来处理呢?
1L
表达式计算完成之后也是数字
数字也是以变量形式来表示的 也可以说成是表达式吧
希望能把具体的依据发出来 展开
2个回答
展开全部
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)
例如
声明了
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)
--
2022-12-05 广告
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有...
点击进入详情页
本回答由--提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询