在if语句中分配fopen的结果

Pet*_*ter 4 c if-statement variable-assignment

我目前正在学习C,并想知道以下两段代码是否表现不同,或者它是否只是一种风格的东西.

看一些来源,他们有以下代码:

...
FILE * pFile;
pFile = fopen ("myfile.txt","r");
if (pFile == NULL)
{ some code }
...
Run Code Online (Sandbox Code Playgroud)

虽然我的教授在他的笔记中有以下代码:

...
FILE * pFile
if ((pFile = fopen("myfile.txt","r")) == NULL)
{ some code }
...
Run Code Online (Sandbox Code Playgroud)

只是想知道这不仅仅是不同程序员的风格偏好,还是将返回/设置行放在if statmeent中的优势.

Jon*_*art 5

没有区别.更有经验的程序员有时会使用第二种形式,只是为了节省一条线,但它们基本相同.第二个往往是更多的"UNIX-y",其中大多数函数调用在继续之前检查错误(而不是成功).

  • 第二种风格对于诸如`if(condition &&(pFile = fopen("foo","r"))!= NULL)`的情况有优势.可能值得一提. (2认同)