B2019

· · 题解

这道题直接按照题意模拟的话没有什么难度,也容易理解。这篇题解将会从背后的原理来讲述此题。

布尔型 (bool)型数值只有两种取值,true(真)和 false (假)。

step 1

如果你要把一个整形数值强行转换成布尔型数值,大家公认的做法是:将 0 化成 false,而把一切非零值都看做 true

所以,这道题的第一步可以这样表示:

整形变量   布尔型变量

0   ------>  false

非0 ------>  true 

step 2

之后,我们要把这个布尔型变量转换成整形变量。

对于 false,显而易见,它转换成了 0。而对于 true,我们把它转换成 1

整形变量   布尔型变量  整形变量

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,但超过了我们的讨论范围,这里不具体解释。