C++ 复合模在C++;?

C++ 复合模在C++;?,c++,operators,compound-assignment,C++,Operators,Compound Assignment,我一直在尝试创建一个简单的程序,将输入的数字分割成比索钞票。我需要的输出是 Enter Amount: 7350 P1000: 7 P500: 0 P200: 1 P100: 1 P50: 1 P20:0 P10:0 P5:0 P1:0 这是我最初的代码: #include <iostream> using namespace std; int main() { int const P1000(1000); int const P500(500); int const

我一直在尝试创建一个简单的程序,将输入的数字分割成比索钞票。我需要的输出是

Enter Amount: 7350
P1000: 7
P500: 0
P200: 1
P100: 1
P50: 1
P20:0
P10:0
P5:0
P1:0
这是我最初的代码:

#include <iostream>
using namespace std;

int main()
{
  int const P1000(1000);
  int const P500(500);
  int const P200(200);
  int const P100(100);
  int const P50(50);
  int const P20(20);
  int const P10(10);
  int const P1(1);
  
  int input;
  //input number
  cout<<"input number in pesos: ";
  cin>>input;
  cout<<"P1000 = "<<input/P1000<<endl;
  cout<<"P500 = "<<(input%1000)/P500<<endl;
  cout<<"P200 = "<<(input%500)/P200<<endl;
  cout<<"P100 = "<<(input%200)/P100<<endl;
  cout<<"P50 = "<<(input%100)/P50<<endl;  
  cout<<"P20 = "<<(input%50)/P20<<endl;
  cout<<"P10 = "<<(input%20)/P10<<endl;
  cout<<"P1= "<<(input%10)/P1<<endl;
  return 0;
}
因此,经过一点修补,我使用了这段代码,效果非常好

#include <iostream>
using namespace std;

int main()
{
  int const P1000(1000);
  int const P500(500);
  int const P200(200);
  int const P100(100);
  int const P50(50);
  int const P20(20);
  int const P10(10);
  int const P1(1);
  
  int input;
  //input number
  cout<<"input number in pesos: ";
  cin>>input;
  cout<<"P1000 = "<<input/P1000<<endl;
  cout<<"P500 = "<<(input%=1000)/P500<<endl;
  cout<<"P200 = "<<(input%=500)/P200<<endl;
  cout<<"P100 = "<<(input%=200)/P100<<endl;
  cout<<"P50 = "<<(input%=100)/P50<<endl;  
  cout<<"P20 = "<<(input%=50)/P20<<endl;
  cout<<"P10 = "<<(input%=20)/P10<<endl;
  cout<<"P1= "<<(input%=10)/P1<<endl;
  return 0;
}
#包括
使用名称空间std;
int main()
{
国际常数P1000(1000);
国际常数P500(500);
国际常数P200(200);
国际常数P100(100);
int const P50(50);
int const P20(20);
int const P10(10);
int const P1(1);
int输入;
//输入号码
库廷普特;

cout这里有一个小程序来说明区别:

#include <iostream>
int main()
{
    int i = 256;

    std::cout << "i: " << i << ", i % 100: " << (i % 100) << std::endl;
    std::cout << "i: " << i << ", i % 12: " << (i % 12) << std::endl;
    std::cout << "i: " << i << ", i % 3: " << (i % 3) << std::endl;
    
    std::cout << std::endl;

    std::cout << "i: " << i << ", i %= 100: " << (i %= 100) << std::endl;
    std::cout << "i: " << i << ", i %= 12: " << (i %= 12) << std::endl;
    std::cout << "i: " << i << ", i %= 3: " << (i %= 3) << std::endl;
}
正如您在第一部分中所看到的,正则模运算符将
i
保留为原始值。这意味着我们得到256个模100、12和3


但是,在第二部分中,复合模运算符不断变化,因此下一个模只对余数进行运算。

下面是一个小程序来说明区别:

#include <iostream>
int main()
{
    int i = 256;

    std::cout << "i: " << i << ", i % 100: " << (i % 100) << std::endl;
    std::cout << "i: " << i << ", i % 12: " << (i % 12) << std::endl;
    std::cout << "i: " << i << ", i % 3: " << (i % 3) << std::endl;
    
    std::cout << std::endl;

    std::cout << "i: " << i << ", i %= 100: " << (i %= 100) << std::endl;
    std::cout << "i: " << i << ", i %= 12: " << (i %= 12) << std::endl;
    std::cout << "i: " << i << ", i %= 3: " << (i %= 3) << std::endl;
}
正如您在第一部分中所看到的,正则模运算符将
i
保留为原始值。这意味着我们得到256个模100、12和3


然而,在第二部分中,复合模运算符不断变化,因此下一个模只对余数进行运算。

与任何其他复合赋值运算符一样,它将运算结果赋值到方程的左侧。与任何其他复合赋值运算符一样,它将运算结果赋值给e方程式中左侧的操作。
i: 256, i % 100: 56
i: 256, i % 12:   4
i: 256, i % 3:    1

i: 256, i %= 100: 56
i: 56,  i %= 12:   8
i: 8,   i %= 3:    2