这是我的代码片段:
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'被赋予一个从未使用过的值.
当你写:
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 ...)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |