Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8766057
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 13, 20262026-06-13T16:27:10+00:00 2026-06-13T16:27:10+00:00

Suppose I have following code snippet: int8_t *a = 1; int16_t *b = (int16_t*)(a

  • 0

Suppose I have following code snippet:

int8_t *a = 1;
int16_t *b = (int16_t*)(a + 1);
int32_t *c = (int32_t*)b + 2;

Then a = 1, b = 2, c = 10.
(Here I am not sure either, because I used printf() with %i and I got a warning about this.)

I am not quite sure how this works. I have some theories, but I prefer to read some documentation about it.

Can someone give me a key word to search for or explain the exact behaviour in this three cases to me? I wasn’t able to find information on this matter on SO or google for lack of a word to search for.

Will the output change when I type

int16_t *a = 1;
int32_t *b = (int16_t*)(a + 1);
int64_t *c = (int32_t*)b + 2;

instead?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-13T16:27:12+00:00Added an answer on June 13, 2026 at 4:27 pm

    I think your whole program is undefined behaviour, because I’m not sure if it is valid to put arbitrary values into pointer variables or to output them with %i.

    That said, I think most environments are ok with it, so I think I can start to explain.

    If a is 1, it (misalignedly) points to the memory address 1.
    Then you add 1, so that it points to 2, and cast the result to fit into b.

    After that, you bake b a uint32_t * and add 2, so effectively you add 2*4 and thus get make b point to 10 (0xA).

    If you do the said changes, your a points to 1 (and 2, as it has 16 bits), adding 1 will make b point to 3 (and 4) (the cast is not needed there), and c will point to 3+2*4 = 11.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Suppose I have following code: public class CBase: AbstractC,IRenderable { //code here } public
Suppose I have following code package memoryleak; public class MemoryLeak { public static int
Possible Duplicate: Are file descriptors shared when fork()ing? Suppose I have following code in
Suppose I have the following code to collect all the possible combinations. abArray =
Suppose I have the following code: foreach(string str in someObj.GetMyStrings()) { // do some
Suppose I have the following code function myFunction(param, callback) { ... if (err) {
suppose that,we have following code auto_ptr<T> source() { return auto_ptr<T>( new T(1) ); }
Suppose I have the following js code: r='d|daa|dd'; reg = /\|.*/; result = reg.exec(r);
Say suppose I have the following Java code. public class Example { public static
Suppose I have the following: using(var ctx = DataContextFactory.Create(0)) { ... Some code ...

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.