What would be the correct output?

"/* Output ? */
#include
using namespace std;

int main(){
long signed CodingBlocks = 2017;
short unsigned BOSS1 = -2018;
unsigned BOSS2 = -2019;
int BOSS3 = -2020;
long long unsigned BOSS4 = -2021;
short unsigned Nagarro = 2018.9;
long signed HackerBlocks = ‘A’;
cout<<CodingBlocks<<endl;
cout<<BOSS1<<endl<<BOSS2<<endl<<BOSS3<<endl<<BOSS4<<endl;
cout<<Nagarro<<endl;
cout<<HackerBlocks<<endl;

return 0;
}"

In this ques, why we are getting range also in the output ?

ANS: 2017 2^16 - 2018 2^32 -2019 -2020 2^64 - 2021 2018 65

CodingBlocks is int so int can store 2017

BOSS1 is an unsigned short since unsigned only stores only positive number , so negative numbers are stored as 2^16 - x (where x is negative) (2^16 because short int contain 16 bits)
so -2018 will be stored as 2^16-2018

BOSS2 is an unsigned int and since int has 32bits so the -2020 will be stored as 2^32

BOSS3 is an int so can store -2020

BOSS4 is an unsigned long long int and since long long int has 64 bits so -2021 will be stored as 2^64-2021

Nagarro is an int so 2018.9 will be stored as 2018 (only the integer part)

HackerBlocks is a signed int so ‘A’ will be stored as its ascii value i.e. 65 due to typecasting s

In case of any doubt feel free to ask :slight_smile:
Mark your doubt as RESOLVED if you got the answer