Ad argvmentvm transi
Topos Uranos

Svmmarivm

Expressio arithmetica non a sinistra ad dextram compvtatvr, vt legitvr, sed secvndvm strvctvram occvltam, arborem svam, qvam praecedentia operatorvm, eorvm associativitas et parentheses figvnt; et in qvoqve nodo hvivs arboris genvs operandorvm decernit qvae operatio fiat, ita vt 7 / 2 valeat 3 et 7 / 2.0 valeat 3.5. Haec lectio qvinqve operatores arithmeticos lingvae C++ cvm integris et cvm realibvs tractat; divisionem integram et residvvm, qvae inde a C++11 versvs nihilvm trvncant, vnde seqvitvr residvvm signvm dividendi svmere et a residvo divisionis Evclideae differre cvm dividendvs negativvs est; modvm residvi Evclidei obtinendi; arborem expressionis; genvs eventvs cvm operandi diversorvm genervm svnt; et dvos modos qvibvs expressio arithmetica integra significationem svam amittit: per nihilvm dividere et in compvtatione intermedia exvndare.

Proposita discendi

  1. Qvotientem et residvvm divisionis integrae in C++ compvtare, etiam cvm operandis negativis, eaqve cvm qvotiente et residvo divisionis Evclideae conferre.
  2. Arborem expressionis arithmeticae secvndvm praecedentiam et associativitatem delineare, eivsqve valorem compvtare.
  3. Genvs eventvs operationis inter operandos diversorvm genervm praedicere.
  4. Divisione integra et residvo vti ad qvantitates resolvendas: digitos nvmeri, dvrationem in horis et minvtis, diem hebdomadis.

Operatores arithmetici

C++ qvinqve operatores arithmeticos binarios habet: additionem +, svbtractionem -, mvltiplicationem *, divisionem / et residvvm %; habet praeterea minvs vnarivm, qvod signvm vnici svi operandi mvtat, vt in -x, et plvs vnarivm, +x, qvod evm vt est relinqvit. Qvattvor priores in integris et in realibvs adhibentvr; residvvm, in integris tantvm. Atqvi eadem scriptvra non eandem operationem in omnibvs casibvs designat: si ambo operandi operatoris / integri svnt, divisio est integra eivsqve eventvs integer est, qvotiens sine fractione sva; si altervter realis est, divisio realis est. Lectio Characteres, valores Booleani, conversiones et constantes conseqventiam hvivs regvlae maxime conspicvam ostendit, scilicet double r{7 / 2}; valorem 3 servare: divisio inter integros facta est anteqvam eventvs in realem converteretvr.

ExemplvmQvinqve operatores cvm dvobvs integris

Programma qvinqve operatores ad 17 et 5 adhibet, et divisionem cvm dividendo reali repetit.

Programma in C++
#include <print>​int main(){    const int a{17};    const int b{5};    std::println("{} + {} = {}", a, b, a + b);    std::println("{} - {} = {}", a, b, a - b);    std::println("{} * {} = {}", a, b, a * b);    std::println("{} / {} = {}", a, b, a / b);    std::println("{} % {} = {}", a, b, a % b);    const double x{17.0};    std::println("{} / {} = {}", x, b, x / b);}
Exitvs
17 + 5 = 2217 - 5 = 1217 * 5 = 8517 / 5 = 317 % 5 = 217 / 5 = 3.4

17 per 5 divisa dant 3 et svpersvnt 2: svnt qvotiens et residvvm cvm 17 res in catervas qvinarvm rervm distribvvntvr. Vltimvs versvs realem per integrvm dividit et 3.4 obtinet. Animadvertendvm est std::println realem 17.0 vt «17» scribere: signvm loci vacvvm brevissimam valoris repraesentationem scribit, ita vt qvod scribitvr genvs non patefaciat; vt id videatvr, decimalia per {:.1f} postvlantvr.

Operator % reales non admittit. Scribere 7.5 % 2 non est error logicae qvem programma inter exseqvendvm detegat, sed error compilationis: compilator dicit operandos genervm double et int ad operatorem non valere.

Programma in C++
#include <print>​int main(){    std::println("{}", 7.5 % 2);}
Nvntii errorvm a compilatore dati
main.cpp: In function ‘int main()’:main.cpp:5:28: error: invalid operands of types ‘double’ and ‘int’ to binary ‘operator%’    5 |     std::println("{}", 7.5 % 2);      |                        ~~~ ^ ~

Residvvm divisionis realis exstat, idqve compvtat fvnctio std::fmod capitis <cmath>, qvae in lectione Bit et bibliotheca mathematica tractabitvr, vna cvm potentia: C++ operatorem potentiae non habet, et 2 ^ 3 non valet 8, sed alivd qvod ibi explicabitvr.