以下包含while循环的代码在C ++中编译。

#include <iostream>
using namespace std;

int main() {
    while (int i = 5)
    {
        break;
    }
    return 0;
}


但是,以下等效的C代码如果使用C编译,则会导致错误:

#include <stdio.h>

int main() {
    while (int i = 5)
    {
        break;
    }
    return 0;
}


编译器输出:

> prog.c: In function 'main': prog.c:5:9: error: expected expression
> before 'int'   while (int i = 5)prog.c: In function 'main':
> prog.c:5:9: error: expected expression before 'int'   while (int i =
> 5)


为什么会这样?我试图在C中查找while循环的文档,但也找不到该文档。

最佳答案

C和C ++是不同的语言。 <iostream>不属于C库,并且usingnamespace仅是C ++关键字。不要混用不同的语言,因为它们根本不一样。

另外,正如@sasquatch所提到的,在C中以while条件声明变量是非法的。

您不应该期望C ++代码在C中进行编译。您也不应该期望相反,因为C不是C ++的适当子集。

关于c++ - 带有While循环的有效C++代码的等效C代码无法编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30147703/

10-11 22:08
查看更多