English 中文(简体)
does argument in printf get located in memory?
原标题:
  • 时间:2009-11-05 23:46:13
  •  标签:
  • c
  • memory

in c, when I write:

printf("result %d ",72 & 184);

Does "72 & 184" get a a block in memory (for example 72 takes 4 bytes, 184 takes 4 bytes?...)

最佳回答

Since 72 & 184 is a constant expression, your compiler is likely to evaluate the answer at compile time, instead of generating code to calculate the same result at runtime.

The answer happens to be 8, so the statement would be the same as:

printf("result %d ", 8);

In this case the compiler is likely to generate what s called an immediate push onto the argument stack, where the value 8 is embedded right into the machine instruction(s). This might be different than pushing a larger value such as 12345678, where it might be too big for an immediate push and then might need to be stored in program memory.

The above is entirely dependent on the CPU architecture for which you re compiling your program, as well as the capabilities and optimisation settings of your compiler.

问题回答

That can depend on the compiler you use. With optimizations the compiler can fold that instruction into one value. That value would reside in the memory with the rest of your code but during the execution of that line it would reside in a cpu register.

I m not sure if any compiler would optimize out the %d with the actual value though:)





相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签