B2019
hanyuchen2019 · · 题解
这道题直接按照题意模拟的话没有什么难度,也容易理解。这篇题解将会从背后的原理来讲述此题。
布尔型 (bool)型数值只有两种取值,true(真)和 false (假)。
step 1
如果你要把一个整形数值强行转换成布尔型数值,大家公认的做法是:将 false,而把一切非零值都看做 true。
所以,这道题的第一步可以这样表示:
整形变量 布尔型变量
0 ------> false
非0 ------> true
step 2
之后,我们要把这个布尔型变量转换成整形变量。
对于 false,显而易见,它转换成了 true,我们把它转换成
整形变量 布尔型变量 整形变量
0 ------> false ------> 0
非0 ------> true ------> 1
step 3
根据以上的推断,就可以得出如下代码:
#include<iostream>
using namespace std;
int main()
{
int a;
cin>>a;
if(a==0)
cout<<0;
else
cout<<1;
return 0;
}
即可通过本题。其实还有一种做法是直接输出 !!a,但超过了我们的讨论范围,这里不具体解释。