Please explain output of Ques 3 of Quiz on programming Fundamentals

#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;
}

hello @sahilkhan2312000131
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

1 Like

I have some doubts about this:

  1. Shouldn’t it be written as: signed long rather than long signed?
  2. unsigned BOSS2 = -2019; Here no data type is written. Shouldn’t it be an error?
  3. signed Nagarro = A; Does it has an error?

both are valid and will work fine

by default compiler treat it as int

it depends if A is variable then no error , otherwise if it is character constant then it will show error becuase quotes are missing

1 Like

Since BOSS2 is an unsigned int and int is of 2 bytes. So shouldn’t BOSS2 be 2^16 -2019

no unisgned int is 4 bytes now

1 Like