C program Output


 
Thread Tools Search this Thread
Top Forums Programming C program Output
# 1  
Old 07-05-2007
C program Output

The output I got for this pgm is "4 4 4 4".
Can any one help me to understand how I got this output.

Also please suggest me some links to learn about argumnets evaluation in C.

# include <stdio.h>

void func(int a, int b, int c, int d)
{
printf("%d %d %d %d", a, b, c, d);
}

int main()
{
int x = 0;
func(++x, ++x, ++x, ++x);
return 0;
}
# 2  
Old 07-05-2007
The output should have been like

Output:

Code:
4 3 2 1

The reason is the value is evaluated from the right to left in the argument list passed to printf so each and every time ++x is encountered the value of x is incremented.
# 3  
Old 07-05-2007
Quote:
Originally Posted by lorcan
The output should have been like
Or rather " 'may' have been like".

The ++ operator means increment before use it's value.

So technically having ++x,++x,++x,++x

can be interpreted as increment four times before you use it's value.

This one area where you have to be careful, especially with macro expansions.

Different compilers, different architectures and different optimisations can give you different results.
# 4  
Old 07-05-2007
Quote:
Originally Posted by lorcan
The reason is the value is evaluated from the right to left in the argument list passed to printf so each and every time ++x is encountered the value of x is incremented.
I would have thought that the entire arguments list is first evaluated and then sent to printf (which explains the output).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

getting no output with my perl program

hi, i have posted the same kind of the question in some other forum of the same site. but realized that it is supposed to be here so i am reposting it .this is the perl script written to check for particular pattern. my file 1 would look like this hwk:678:9878:asd:09: abc cfgb 12 nmjk ......... (3 Replies)
Discussion started by: anurupa777
3 Replies

2. Programming

Please help me with my output for my program

Hello All, iam a new memeber today i joined this forum. hope i will get help. the below program takes input strings and give reverse of input string. && mv /home/test1/programs/display /home/test1/programs/old echo " Please enter the test " read a echo "$a" > file wc -c file > file1 perl... (1 Reply)
Discussion started by: ameyrk
1 Replies

3. Shell Programming and Scripting

Display output bash program

Hello, i have a problem with the output from my bash program. I made this program #!/bin/bash BESTANDEN=$* # Plaatst bestanden in de variabele BESTANDEN TMPFILE=xmlprog.sh.$$.$RANDOM # basisnaam voor tijdelijke bestanden # controller of het programma correct is aangeroepen if then ... (6 Replies)
Discussion started by: dutchspiders
6 Replies

4. Shell Programming and Scripting

get output of program within a script to a file

I am running a program which probably calla script within, this script executes in a pop window and control returns back to main program. Whilw this script is executing i can see a number of messages being displayed but I cannot read them ,too fast. Is their a way I can redirect those... (3 Replies)
Discussion started by: ruchimca
3 Replies

5. UNIX for Advanced & Expert Users

how do collect shell output in a C program

i use the system command to execute a shell command... ca i collect the out put in the form of a string or something using the same C program? (5 Replies)
Discussion started by: damn_bkb
5 Replies

6. UNIX for Dummies Questions & Answers

Program output overflows

I Wrote code that forks into two processes, a parent process, and a child process. The parent process will take the arguments to main() and send them one character at a time to the child process through a pipe (one call to write for each character). The child process will count the characters... (1 Reply)
Discussion started by: hansel13
1 Replies

7. Shell Programming and Scripting

Directing program output to a file

When I do time tar cvf /dev/st0 /mnt/junk >> /root/benchlog, I want it to put the output of the time command into the benchlog file, but it put /mnt/junk. How do I get it to put the output of the tar command? (1 Reply)
Discussion started by: jeriryan87
1 Replies

8. Programming

ambiguity in program output

1 #include <fcntl.h> 2 3 main(int argc, char *argv) 4 { 5 char buf; 6 int fd, count = 0; 7 8 if (argc > 1) 9 fd = open(argv, O_RDONLY); 10 else 11 fd = 0; /* Use standard input */ 12 13 while (read(fd, buf, 1) > 0) { 14 if (count < 5) write(1, buf, 1); 15 ... (3 Replies)
Discussion started by: bishweshwar
3 Replies

9. UNIX for Dummies Questions & Answers

how can I use the stream output in other program

Hello I wander if im doing : ls -l and its giving me lets say 3 results : -rw-r--r-- 1 blah other 1789 May 19 2003 foo.c -rw-r--r-- 1 blah other 1014 May 19 2003 foo.h -rw-r--r-- 1 blah other 270 May 19 2003 foo1.c now I would like to use the first... (1 Reply)
Discussion started by: umen
1 Replies

10. UNIX for Dummies Questions & Answers

Capturing output from C++ program

Hi I have a C++ program that generates a lot of log information on the console, I need this output (printed using printf function) to go to a file since I will use crontab to schedule the job. I know I can do this: myprog > myfile but I don't know how to enter this in crontab. I use... (3 Replies)
Discussion started by: GMMike
3 Replies
Login or Register to Ask a Question