числа и операции с () - PullRequest
       40

числа и операции с ()

0 голосов
/ 28 октября 2019

Итак, у меня возникла проблема с моей логикой с операторами в C. Я не знаю, как компилятор запускает эти (%) /?

#include <stdio.h>
int main (){
int number1=1606,number2,number3,number4;
number2 = number1/5000;
number3 = (number1%5000)/1000;
number4 = (number1%5000)%1000/100;
printf("%d\n%d\n%d\n%d",number1,number2,number3,number4);
return 0;
}

Так что я не понимаю это число3? Разве 1606% 5000 = 3212, а затем / 1000 = 3? Так я получаю 1 от того, как это работает?

1 Ответ

0 голосов
/ 28 октября 2019

В этом выражении

number3 = (number1%5000)/1000;

используется целочисленная арифметика. Оператор% возвращает остаток от операции /.

Таким образом, подвыражение number1%5000 дает значение 1606, поскольку

число1 может быть представлено как

number1 = 0 * 5000 + 1606.

Разделив остаток на 1000, вы получите 1.

Из стандарта C (6.5.5 Мультипликативные операторы)

5 Результат оператора /частное от деления первого операнда на второй;результат оператора% - остаток. В обеих операциях, если значение второго операнда равно нулю, поведение не определено.

...