Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Odejmowanie liczb unsigned int

Ostatnio zmodyfikowano 2013-10-05 21:10
Autor Wiadomość
m7s1994
Temat założony przez niniejszego użytkownika
[C++] Odejmowanie liczb unsigned int
» 2013-10-05 16:05:41
Witam :)

***PIERWSZY PROGRAM***
C/C++
#include<iostream>
using namespace std;
int main()
{
    unsigned char x = 2;
    unsigned char y = 3;
    cout << x y << endl;
    return 0;
}

***DRUGI PROGRAM***
C/C++
#include<iostream>
using namespace std;
int main()
{
    unsigned int x = 2;
    unsigned int y = 3;
    cout << x y << endl;
    return 0;
}

Programy różnią się typami zmiennych, pierwszy wyświetla mi -1, a drugi jakąś zupełnie inną liczbe.
Mógłby ktoś wytłumaczyć mi dlaczego tak się dzieje, że jeśli zmienne będa typu unsigned char to wszystko działa jak należy, ale jeśli są typu unsigned int to program wyświetla bzdury?
P-93169
Monika90
» 2013-10-05 21:10:46
Program nie wyświetla bzdur.

unsigned char jest (w twojej implementacji) promowane do int, odejmowanie jest wykonane w typie int i wynik też jest typu int.

Natomiast unisgned int nie podlega promocji, odejmowanie używa arytmetyki bez znaku i wynik jest typu unsigned int. Unsigned int nie może mieć wartości -1, zamiast -1 dostaniesz 232 - 1 na 32-bitowym komputerze, albo 264 - 1 na 64-bitowym.
P-93214
« 1 »
  Strona 1 z 1