Su una piattaforma a complemento a complemento, quale sarebbe il seguente codice stampato?In che modo std :: cout stampa zero zero in un sistema a complemento a un complemento?
#include <iostream>
int main() {
int i = 1, j = -1;
std::cout << i+j << std::endl;
return 0;
}
ho il sospetto che sarebbe stampare "0" invece di "-0", ma io non riesco a trovare niente di autorevole.
Modifica: Per chiarire, sono interessato a come -0 verrebbe stampato, diverse persone hanno suggerito che, in pratica, l'implementazione del complimento di uno potrebbe non generare uno zero negativo con il codice precedente.
In questi casi, il seguente è stato suggerito per generare in realtà un -0:
#include <iostream>
int main() {
std::cout << ~0 << std::endl;
return 0;
}
La questione rimane ancora: che cosa sarà questa stampa?
Stampa '0' su [coliru] (http://coliru.stacked-crooked.com/a/ac6c491f7ca7f7a9). E sono abbastanza sicuro che è quello che dovrebbe succedere ogni volta. –
Dubito che questo stamperà mai '-0' su qualsiasi sistema. – nwp
Permesso di taggare anche questo C? Suppongo che i programmatori C siano più vicini a questa roba. – Bathsheba