将C转换为Pascal

时间:2015-12-09 16:51:04

标签: c delphi pascal

我正在将用C编写的代码转换为Pascal。我对一个似乎很简单但产生疑问的部分表示怀疑!

int Length = ...;  
void *FileBase = ...;  
if (Length && FileBase != NULL)
    ....

上面一行的条件是“if”,它的意思是“长度”和“文件库”分别不同于“0”和“空”?

if(长度<> 0)和(FileBase<> Nil)然后 ???

相同

2 个答案:

答案 0 :(得分:2)

这不是真正的Delphi或Pascal问题。这是关于C中运算符优先级的问题。有许多引用会告诉你这一点。例如:http://en.cppreference.com/w/c/language/operator_precedence

关键是!=的优先级高于&&。所以表达式

Length && FileBase != NULL

具有相同的含义
Length && (FileBase != NULL)

因为在C值中如果它们非零则被认为是真的,在Delphi / Pascal中这个表达式将是:

(Length <> 0) and (FileBase <> nil)

答案 1 :(得分:1)

你是对的 - 它应该被翻译为if (Length <> 0) and (FileBase <> nil)