为什么这会在我没有给出任何输入的情况下执行?

avi*_*irk 1 c++

这是我的代码片段:

int a;
if(a=8)
    cout<<"Its right";
else
    cout<<"Not at all";
getch();
return(0);
Run Code Online (Sandbox Code Playgroud)

我正在获取输出,Its right而我没有给它任何输入它只是一个赋值给a=8.

**Borland Compiler** 给出以下2个警告并执行代码.

1:可能的错误分配(a = 8)

2:'a'被赋予一个从未使用过的值.

Ree*_*sey 8

当你写:

if(a=8)
Run Code Online (Sandbox Code Playgroud)

变量a 分配了 8,然后返回a,所以你有效地写了:

a = 8;
if(a)
Run Code Online (Sandbox Code Playgroud)

这不是零,因此被视为"真实".

我(和编译器)怀疑你打算写(注意==而不是=):

if(a==8)
Run Code Online (Sandbox Code Playgroud)

这就是你收到警告的原因.(请注意,在这种情况下,a仍然未初始化,因此行为未定义.您仍然会收到警告,并且可能仍然返回true ...)