我刚刚开始编程和通过C ++编程原理和实践阅读。我目前正在进行第3章练习,并且不明白为什么我编写的代码有效。请帮忙解释一下。
#include "std_lib_facilities.h"
int main() {
cout<<"Hello, User\n""Please enter a number (Followed by the 'Enter' key):";
int number=0;
cin>> number;
if (number%2) {
cout<<"Your number is an odd number!";
} else {
cout<<"Your number is an even number\n";
}
return 0;
}
答案 0 :(得分:2)
当number
为奇数时,number%2
为1
。
if (number%2) {
相当于
if (1) {
因此,您可以从行
获得输出cout<<"Your number is an odd number!";
当number
为偶数时,number%2
为0
。
if (number%2) {
相当于
if (0) {
因此,您可以从行
获得输出cout<<"Your number is an even number\n";
答案 1 :(得分:0)
模数运算符只是确定相应除法问题的其余部分。例如,2 % 2
返回 0 ,因为2 / 2
为1,余数为 0 。
在您的代码中,输入的任何偶数都将返回0,因为根据定义,所有偶数都可以被2整除(意味着<any even number> % 2 == 0
)
同样,输入的任何奇数都将返回1(例如,7 % 2 == 1
,因为7/2的余数为1)。
在c ++中,与许多编程语言一样,数字值可以被视为布尔值,0表示与false相关,而其他数字(取决于语言)与true相关(据我所知,1是普遍正确的对编程语言很重要。)
换句话说,奇数输入会将number % 2
评估为1,表示正确。所以if (number % 2),
我们知道输入数字是奇数。否则,number % 2
必须为false,表示0,表示输入数字为偶数。
答案 2 :(得分:0)
“if”语句适用于布尔值。让我们记住,布尔值由“false”和“true”表示,但实际上,它都是关于包含{0,1}的Z2的二进制集。 “false”表示“0”,“true”表示“1”(或电子设备中的某些人将其解释为“off / on”)
所以,是的,在窗帘后面,“if”语句正在寻找0或1.模数运算符返回a / b的其余部分。当你输入任何数字并将其除以2时,你将获得0或1的余数,无论是对还是奇数。
这就是它工作的原因,你总是得到0或1的结果,这样做是错误和真实的。
答案 3 :(得分:0)
从这个角度考虑模数: while(整数A大于整数B,) A = A - B; 返回A
例如,9%2 - > 9-2 = 7-2 = 5-2 = 3-2 = 1 9%2 = 1;
语句if(number%2)是所谓的布尔比较(true false)。另外一种写这个语句的方法是if(number%2!= 0)或if(number%2!= false),因为false和zero是模棱两可的。您将获取模数运算符函数的返回值(我们假设的模板对象是一个整数)并将其插入到if语句中,如果输入不等于零则执行该语句。如果输入是-5,9999999,1,则执行语句 - 除零之外的任何内容。所以,如果(2)是真的。如果(-5)也是如此。 if(0)将为false。如果(5%2)是1 =真。 if(4%2)if if(0)= false。如果为true,则执行if语句正文中的代码。