#include <iostream>
#include <cstdint>
#include <type_traits>
using namespace std;
int main() {
// Incorrect input/output of an int_fast8_t variable
int_fast8_t integer_variable;
cin >> integer_variable; // 84 in the input
cout << static_cast<int>(integer_variable) << endl; // the value of the variable is 56 (ASCII code of the character '8')
cout << integer_variable << endl; // character '8' printed – the character of the ASCII code 56
// The foundation of the above problems: int_fast8_t is, in this implementation, bond to signed char
cout << is_same<int_least8_t, signed char>::value << endl;
// Ignoring garbage left in the input, that is the digit of 4
cin.ignore();
// However, a variable of the type int_least16_t works correctly
int_least16_t another_integer_variable;
cin >> another_integer_variable; // Number 84 in the input
cout << static_cast<int>(another_integer_variable) << endl; // The value of the variable – 84
cout << another_integer_variable << endl; // The variable is being printed correctly
// This works, since in this implementation int_least16_t is the simple short int
cout << is_same<int_least16_t, short int>::value << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGludD4KI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CgkvLyBJbmNvcnJlY3QgaW5wdXQvb3V0cHV0IG9mIGFuIGludF9mYXN0OF90IHZhcmlhYmxlCglpbnRfZmFzdDhfdCBpbnRlZ2VyX3ZhcmlhYmxlOwoJY2luID4+IGludGVnZXJfdmFyaWFibGU7IC8vIDg0IGluIHRoZSBpbnB1dAoJY291dCA8PCBzdGF0aWNfY2FzdDxpbnQ+KGludGVnZXJfdmFyaWFibGUpIDw8IGVuZGw7IC8vIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgaXMgNTYgKEFTQ0lJIGNvZGUgb2YgdGhlIGNoYXJhY3RlciAnOCcpCgljb3V0IDw8IGludGVnZXJfdmFyaWFibGUgPDwgZW5kbDsgLy8gY2hhcmFjdGVyICc4JyBwcmludGVkIOKAkyB0aGUgY2hhcmFjdGVyIG9mIHRoZSBBU0NJSSBjb2RlIDU2CgkvLyBUaGUgZm91bmRhdGlvbiBvZiB0aGUgYWJvdmUgcHJvYmxlbXM6IGludF9mYXN0OF90IGlzLCBpbiB0aGlzIGltcGxlbWVudGF0aW9uLCBib25kIHRvIHNpZ25lZCBjaGFyCgljb3V0IDw8IGlzX3NhbWU8aW50X2xlYXN0OF90LCBzaWduZWQgY2hhcj46OnZhbHVlIDw8IGVuZGw7CgkKCS8vIElnbm9yaW5nIGdhcmJhZ2UgbGVmdCBpbiB0aGUgaW5wdXQsIHRoYXQgaXMgdGhlIGRpZ2l0IG9mIDQKCWNpbi5pZ25vcmUoKTsKCQoJLy8gSG93ZXZlciwgYSB2YXJpYWJsZSBvZiB0aGUgdHlwZSBpbnRfbGVhc3QxNl90IHdvcmtzIGNvcnJlY3RseQoJaW50X2xlYXN0MTZfdCBhbm90aGVyX2ludGVnZXJfdmFyaWFibGU7CgljaW4gPj4gYW5vdGhlcl9pbnRlZ2VyX3ZhcmlhYmxlOyAvLyBOdW1iZXIgODQgaW4gdGhlIGlucHV0Cgljb3V0IDw8IHN0YXRpY19jYXN0PGludD4oYW5vdGhlcl9pbnRlZ2VyX3ZhcmlhYmxlKSA8PCBlbmRsOyAvLyBUaGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIOKAkyA4NAoJY291dCA8PCBhbm90aGVyX2ludGVnZXJfdmFyaWFibGUgPDwgZW5kbDsgLy8gVGhlIHZhcmlhYmxlIGlzIGJlaW5nIHByaW50ZWQgY29ycmVjdGx5CgkvLyBUaGlzIHdvcmtzLCBzaW5jZSBpbiB0aGlzIGltcGxlbWVudGF0aW9uIGludF9sZWFzdDE2X3QgaXMgdGhlIHNpbXBsZSBzaG9ydCBpbnQKCWNvdXQgPDwgaXNfc2FtZTxpbnRfbGVhc3QxNl90LCBzaG9ydCBpbnQ+Ojp2YWx1ZSA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0=