gpt4 book ai didi

C++ - 乘法/加法,两个整数,然后确定它们是偶数还是奇数

转载 作者:太空狗 更新时间:2023-10-29 23:35:32 25 4
gpt4 key购买 nike

我遇到了一个简单的程序的问题,该程序将 2 个整数相乘并打印输出以确定它是偶数还是奇数。它还会将开头输入的 2 个整数相加,并在下一行执行相同的操作。如果产品是偶数或奇数,乘法工作正常并显示。但是,添加并没有这样做,我不明白为什么。这是我的代码:

#include <iostream>
using namespace std;

int main (){
int a, b;
cout << "Please enter an integer: ";
cin >> a;

cout << "Please enter another integer: ";
cin >> b;

if (a*b %2== 0){
cout << "The product of " << a << " and " << b << " is " << (a*b)
<< " and is even." << endl;
}
else {
cout << "The product of " << a << " and " << b << " is " << (a*b)
<< " and is odd." << endl;
};

if (a+b %2== 0){
cout << "The sum of " << a << " and " << b << " is " << (a+b)
<< " and is even." << endl;
}
else {
cout << "The sum of " << a << " and " << b << " is " << (a+b)
<< " and is odd." << endl;
}
return (0);
}

任何帮助和解释将不胜感激。谢谢!

最佳答案

Operator Precedence

基本上,%+ 之前被处理,所以你的测试:

if (a+b % 2 == 0)

效果像

if (a + (b%2) == 0)

这没有多大意义,而且很少会是真的,除非 b 甚至是 a0

所有与乘法有关的运算(*/%)具有相同的优先级,从左开始处理-向右,所以

if (a*b % 2 == 0)

效果不错,因为:

if ((a*b) % 2 == 0)

这恰好是你真正的意思。

但是,这些乘法运算是在与加法相关的运算(+-)之前处理的。所以 %+ 之前分组,导致您的特定问题。

你可能在学校学过运算顺序,比如我学过BODMAS .相同的规则适用于 C++。

就我个人而言,我发现最好在任何类型的复合表达式中自由使用括号,即使并非绝对必要。它可以使代码更易于阅读,而不是试图在脑海中记住所有规则。所以我更愿意:

if ((a*b) % 2 == 0) // ...
if ((a+b) % 2 == 0) // ...

即使第一个括号中的额外括号并不是真正需要的。

关于C++ - 乘法/加法,两个整数,然后确定它们是偶数还是奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34859876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com