【发布时间】:2021-04-16 17:02:16
【问题描述】:
我需要用 C++ 编写一个程序,在该程序中我在控制台中插入一个 4 位数字“n”,它是一个简单的数字,控制台向我显示某个数字与 4 位数字的乘法,我首先需要写。
我尝试编写 (n/!2) 以使程序仅在数字不能除以 2 并且控制台显示 "main.cpp:22:36: warning: division by zero [-Wdiv-by-zero]". 时才执行
我试过删除
(n /! 2) 并且代码执行没有问题。如果有人能告诉我如何解决它,我会很高兴。
#include <bits/stdc++.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
int getProduct(int n)
{
int product = 1;
while (n != 0) {
product = product * (n % 10);
n = n / 10;
}
return product;
}
int main()
{
int n;
cout << "insert n ";
cin >> n;
if (n >= 1000 && n <= 9999 && n /! 2) {
cout << (getProduct(n));
}
}
【问题讨论】:
-
这个
(n /! 2)是什么意思? -
@Slava (n /! 2) 与 !+ 或 !- 相同,但我希望有除法。我尝试添加!之前/但它给了我另一个错误:在'!'令牌之前预期')'
-
@ТодорСлавов
!+和!-并不是什么特别的东西。在整数上使用!会将整数视为bool,其中除了0之外的任何内容都是true(1) 和0是false(0)。!将其反转,因此true变为false,反之亦然。当bool在算术上下文中使用时(例如在除法中),它被提升为int(0 或 1)。在这种情况下0. -
"(n /! 2) 与 !+ 或 !- 相同,但有除法" 恐怕你不明白
!+或!-的作用。您需要学习该语言的基础知识,而不是自行理解 C++ 中的操作方式
标签: c++ division integer-division divide-by-zero floor-division