fork(3) download
  1. #include <iostream>
  2. #include <cstdint>
  3. #include <type_traits>
  4. using namespace std;
  5.  
  6. int main() {
  7. // Niepoprawne wypisywanie i wczytywanie zmiennej typu int_fast8_t
  8. int_fast8_t zmienna_calkowita;
  9. cin >> zmienna_calkowita; //na wejściu liczba 84
  10. cout << static_cast<int>(zmienna_calkowita) << endl; //wartość zmiennej – 56 (kod ASCII znaku '8')
  11. cout << zmienna_calkowita << endl; //wypisany znak '8' – znak o kodzie ASCII 56
  12. // Źródło problemów: int_fast8_t to w tej implementacji signed char
  13. cout << is_same<int_least8_t, signed char>::value << endl;
  14.  
  15. // Zignorowanie zostawionych na wejściu śmieci, czyli cyfry 4
  16. cin.ignore();
  17.  
  18. // Ale zmienna typu int_least16_t działa już dobrze
  19. int_least16_t inna_zmienna_calkowita;
  20. cin >> inna_zmienna_calkowita; //na wejściu liczba 84
  21. cout << static_cast<int>(inna_zmienna_calkowita) << endl; //wartość zmiennej - 84
  22. cout << inna_zmienna_calkowita << endl; //poprawne wypisywanie zmiennej
  23. // Działa, gdyż w tej implementacji int_least16_t to zwykły short int
  24. cout << is_same<int_least16_t, short int>::value << endl;
  25. return 0;
  26. }
Success #stdin #stdout 0s 3464KB
stdin
84

84
stdout
56
8
1
84
84
1