My code:
#include <iostream>
using namespace std;
int main() {
    unsigned int  a = 0x0009, b = 0x0002;
    unsigned int  c = a + b;
    cout << c;
}
Now
c = 11
I want to this:
c = 000B
How can I do ?
My code:
#include <iostream>
using namespace std;
int main() {
    unsigned int  a = 0x0009, b = 0x0002;
    unsigned int  c = a + b;
    cout << c;
}
Now
c = 11
I want to this:
c = 000B
How can I do ?
 
    
     
    
    When you do this
int main() {
    unsigned int  a = 0x0009, b = 0x0002;
    unsigned int  c = a + b;
}
Then c has the value of 11, it also has the value of 0x000B. It also has the value of 10 in a representation that uses 11 as base.
11 and 0x000B (and 10) are different representations of the same value.
When you use std::cout then the number is printed as decimal by default. What representation you choose to print the value on the screen has no influence whatsoever on the actual value of c.
 
    
    What I understand is that you want to retrieve the result in an hexadecimal specific format XXXX.
Computing the addition is the same as any number base, you only need to use (here I display) the result in your format.
You can do this, for instance:
#include <iostream>
#include <iomanip>
std::string displayInPersonalizedHexa(unsigned int a)
{
    std::stringstream ss;
    ss << std::uppercase<<  std::setfill('0') << std::setw(4) << std::hex<< a;
    std::string x;
    ss >>x;
    //std::cout << x;
    return x;
}
int main() {
    unsigned int  a = 0x0009, b = 0x0002;
    unsigned int  c = a + b;
    // displays 000B
    std::cout << displayInPersonalizedHexa(c) << std::endl;
    // adds c=c+1
    c=c+1;
    // displays 000C
    std::cout << displayInPersonalizedHexa(c) <<  std::endl;
    
   //0xC+5 = 0x11
    c=c+5;
    // displays 0011
    std::cout << displayInPersonalizedHexa(c) <<  std::endl;
}
This will output
000B
000C
0011
