如何根据两种输入状态写入输出结果

时间:2015-12-28 03:23:16

标签: c++ if-statement

我使用if命令来决定两个输入A,B的输出作为表

 A   B   write_output
 0   0   1 1
>0   0   0 1
 0  >0   1 0
>0  >0   0 0

例如,如果A> 0且B = 0,那么我将输出值写为0和1.我正在使用if命令来实现它。但这不是我预期的表格。你能帮我解决一下吗?

这是我的代码

std::ofstream myfile;
myfile.open ("report.txt", std::ios::app);  
if(A==0 & B==0)
   myfile <<  1 << "\t" <<1<<'\n';
else if (A>0)
   myfile << 0 << "\t" <<1<<'\n';
else if (B>0)
   myfile << 1 << "\t" <<0<<'\n';
else
   myfile << 0 << "\t" <<0<<'\n';
myfile.close();

文本文件中的输出为

1   0
1   0
0   0
0   0

您可以看到第二列几乎为零值。这意味着如果(B> 0),代码不会转到其他地方。

1 个答案:

答案 0 :(得分:4)

你的逻辑是有缺陷的。您需要在所有if分支中测试这两个条件。正如目前所写,你永远无法到达其他部分。

应该是:

if(A==0 && B==0)
   myfile << 1 << "\t" << 1 << '\n';
else if (A>0 && B==0)
   myfile << 0 << "\t" << 1 << '\n';
else if (A==0 && B>0)
   myfile << 1 << "\t" << 0 << '\n';
else
   myfile << 0 << "\t" << 0 << '\n';

此外,&是按位AND;你希望&&用于逻辑AND。