C中的"-1L","1L"等是什么意思?
例如,在ftell参考中,它说
...如果发生错误,则返回-1L ...
这是什么意思 ?什么是"1L"?
如果发生错误,为什么不返回NULL?
Mar*_*iot 39
在L指定该号码是一个long类型,因此-1L是一long组到负一,和1L是一long组以积极的.
至于为什么ftell不只是返回NULL,它是因为NULL用于指针,这里long返回.请注意,0未使用,因为它0是ftell要返回的有效值.
捕获这种情况涉及检查非负值:
long size;
FILE *pFile;
...
size = ftell(pFile);
if(size > -1L){
// size is a valid value
}else{
// error occurred
}
Run Code Online (Sandbox Code Playgroud)
ftell()返回类型long int,应用于文字的L后缀强制其类型为long而不是plain int.
NULL将完全不正确,因为它是一个表示指针而不是整数的宏.它的值,当被解释时,整数可以表示有效的文件位置,而-1(或任何负值)则不能.
对于所有意图和目的,您通常可以简单地将错误返回视为-1,由于隐式转换规则,L后缀在大多数情况下对于正确操作并不重要