发信人: goodfrd(Supervisor) 
整理人: wenbobo(2002-12-24 09:22:33), 站内信件
 | 
 
 
【 在 w5762(爱新绝罗) 的大作中提到:】 
 :请问c语言中,printf()函数里的计算顺序
 :是有左向右还是相反  
 :如prinft("%d,%d,%d",*P ,*(P++)+=5,*(P++))  
 :怎么算??  
 
 把我在4个平台(DOS,SCO,HP-UX,OS/400)上的测试结果贴出来给大家看:  
 1)PWIN98的DOS,BC++ 3.1:  
 C:\TEMP>VER  
 Windows 98 [Version 4.10.2222]  
 
 C:\TEMP>TYPE T3.C  
 #include <stdio.h>  
 main()  
 {  
   char s[10], *p = s;  
   int  n;  
 
   for(n = 0; n < 10; n++) s[n] = n + 1; 
   printf("%d,%d,%d\n", *p, *(p++)+=5, *(p++)); 
   return 0; 
 } 
 C:\TEMP>T3  
 3,8,1  
 
 
 
 2)SCO OpenServer 5.0.4:  
 $ uname -a  
 SCO_SV sco51 3.2 2 i386  
 $ cat t3.c  
 #include <stdio.h>  
 main()  
 {  
   char s[10], *p = s;  
   int  n;  
 
   for(n = 0; n < 10; n++) s[n] = n + 1; 
   printf("%d,%d,%d\n", *p, *(p++)+=5, *(p++)); 
   return 0; 
 } 
 $ cc -o t3 t3.c 
 $ ./t3 
 3,7,1 
 
 
 
 3)HP 9000 HP-UX 11.0 
 $ uname -a 
 HP-UX hp2 B.11.00 U 9000/800 1113480561 unlimited-user license 
 $ cat t3.c 
 #include <stdio.h>  
 main()  
 {  
   char s[10], *p = s;  
   int  n;  
 
   for(n = 0; n < 10; n++) s[n] = n + 1; 
   printf("%d,%d,%d\n", *p, *(p++)+=5, *(p++)); 
   return 0; 
 } 
 $ cc -o t3 t3.c 
 $ ./t3 
 1,6,2 
 
 
 
 4)AS/400, OS/400 V4R4M0 (CA/400不能用[]\,用 trigraphs 代替)
 SRCPF member:
 #include <stdio.h>  
 main()  
 {  
   char s??(10??), *p = s;  
   int  n;  
 
   for(n = 0; n < 10; n++) s??(n??) = n + 1; 
   printf("%d,%d,%d??/n", *p, *(p++)+=5, *(p++)); 
   return 0; 
 } 
 
 Run *pgm:
 1,6,2 
 Press ENTER to end terminal session. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ===>                                                                             
                                                                                   
  F3=Exit F4=End of File F6=Print F9=Retrieve F17=Top                              
  F18=Bottom  F19=Left   F20=Right F21=User Window      
 
 
 怎么样?结果是残酷的吧?有点想不通吧?为了以后你的工作不要被领导臭骂、被用户臭骂,奉劝各位老实一点,不要玩这些花样、钻这些没有意思的牛角尖。
 
  ---- 欢迎光临良友程序库:http://0d0a.126.com http://f12.my163.com,免费提供我的各种Source Code
 
  兄弟我抛出几块砖,有玉的赶紧亮出来啊!   | 
 
 
 |