C中的"-1L"是什么?

bog*_*jov 19 c

C中的"-1L","1L"等是什么意思?

例如,在ftell参考中,它说

...如果发生错误,则返回-1L ...

这是什么意思 ?什么是"1L"?

如果发生错误,为什么不返回NULL?

Mar*_*iot 39

L指定该号码是一个long类型,因此-1L是一long组到负一,和1L是一long组以积极的.

至于为什么ftell不只是返回NULL,它是因为NULL用于指针,这里long返回.请注意,0未使用,因为它0ftell要返回的有效值.

捕获这种情况涉及检查非负值:

long size;
FILE *pFile;

...

size = ftell(pFile);
if(size > -1L){
    // size is a valid value
}else{
    // error occurred
}
Run Code Online (Sandbox Code Playgroud)

  • @Mat:这也有些不正确,不是吗?在C中,''c'的类型是`int`,而不是`char`. (3认同)

Cli*_*ord 6

ftell()返回类型long int,应用于文字的L后缀强制其类型为long而不是plain int.

NULL将完全不正确,因为它是一个表示指针而不是整数的宏.它的值,当被解释时,整数可以表示有效的文件位置,而-1(或任何负值)则不能.

对于所有意图和目的,您通常可以简单地将错误返回视为-1,由于隐式转换规则,L后缀在大多数情况下对于正确操作并不重要