Въпрос за C

Dizasterr

Registered
Здравейте, не знаех къде да го постна, но имам проблем, а ми трябва спешно. Написах този код за извеждане на резултати и на 15 ред ми изкарва ето това 15:rohsbnnjoh h. Въпроса ми е защо го изкарва по този начин?

Код:
#include <stdio.h>
static float w;
short f(short a, short *b) {a++;  (*b)++; w++; printf ("13: %d  %d  %f\n",a,*b,w);return a+*b;}
int main(){
   short x, y, z, arr[]={5,4,3,2}, *p=arr;   
   char m[]="programming",*pc;
   y=z=5; x = (y++ !=z); printf("1: %d %d\n",x,y);      
   x=y=2; x *=(y=3); printf("2: %d  %d\n",x,y);      
   x=0; y=1; z=8; printf("3: %d %d\n",x||y&&!z, x);  
   x=1;y=5; printf("4: %d %d\n",x, x<y? x:y);      
   y=0; if(y) x=5;else x=3; printf("5: %d %d\n",x,y);    
   y=5;if(z=(y++>5))x=5;else x=3; printf("6: %d %d %d\n",x,y,z);
   x=y=0; while(y++<2) x+=y; printf("7: %d  %d\n",x,y);  
   for(x=y=1;y<3;x=y++) printf("8: %d  %d\n",x,y);      
   for(x=0,y=9;y>=1;x++,y/=3); printf("9: %d  %d\n",x,y);
   printf("10:  %d    %d\n",p[2], *(arr+1));
   x=y=2; z=f(x,&y); printf("11: %d   %d   %d  %f\n", x,y,z,w) ;
   for(x=y=z=10 ; z-- >0 ;x*=y); printf("12: %d %d %d\n",x,y,z);
   x=1;y=5;f(x,&y);printf("14: %d %d\n",x,y);
   for (pc=m; *pc  ; pc++)    if(pc-m >2) (*pc)++;
   printf("15: %s  %c\n",m+1, *(m+3)); 
   return 0;
}
 
for (pc=m; *pc ; pc++) if(pc-m >2) (*pc)++;

виж този ред , по-точно това (*pc)++; , преговори приоритета на операциите , защото първо тук извличаш стойноста (сиреч, първо изпълняваш първо действието в скобите ) и прибавяш . Пробвай с *(pc)++ :?:
 
novappt каза:
for (pc=m; *pc ; pc++) if(pc-m >2) (*pc)++;

виж този ред , по-точно това (*pc)++; , преговори приоритета на операциите , защото първо тук извличаш стойноста (сиреч, първо изпълняваш първо действието в скобите ) и прибавяш . Пробвай с *(pc)++ :?:

Надявам се, не си мислиш тази звездичка за знака за умножение :D
 

Back
Горе