Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [c] problema di sintassi

    char o;
    //...
    //c è 1 stringa
    switch(o=1,*c++)
    //...

    perchè, all'interno di switch, 0=1,*c++ ... che vuol dire?
    eXtending-Php.net coming soon ...

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Aritmetica dei puntatori...

    Ma sei sicuro che funzioni?

  3. #3
    si, ma, all'interno dell'intero codice, la variabile "o" (qui settata a 1) non viene mai usata ... vi posto il codice (è l'interprete di BrainFuck, un linguaggio di programmazione):

    codice:
    #include <stdio.h>
    
    int  p, r, q;
    char a[5000], f[5000], b, o, *s=f;
    
    void interpret(char *c)
    {
    	char *d; int tmp;
    
    	r++;
    	while( *c ) {
    	      //if(strchr("<>+-,.[]\n",*c))printf("%c",*c);
    	      switch(o=1,*c++) {
    	      case '<': p--;        break;
    	      case '>': p++;        break;
    	      case '+': a[p]++;     break;
    	      case '-': a[p]--;     break;
    	      case '.': putchar(a[p]); fflush(stdout); break;
    	      case ',': 
    		    tmp=getchar();
    		    if (tmp == EOF) a[p]=0; 
    		    else a[p]=tmp;
    		    break;
    	      case '[':
    			for( b=1,d=c; b && *c; c++ )
    				b+=*c=='[', b-=*c==']';
    			if(!b) {
    				c[-1]=0;
    				while( a[p] )
    					interpret(d);
    				c[-1]=']';
    				break;
    			}
    		case ']':
    			puts("UNBALANCED BRACKETS"), exit(0);
    
    		default: o=0;
    		}
    		if( p<0 || p>100)
    			puts("RANGE ERROR"), exit(0);
    	}
    	r--;
    }
    
    int main(int argc,char *argv[])
    {
    	FILE *z;
    
    	q=argc;
    
    	if((z=fopen(argv[1],"r"))) {
    		while( (b=getc(z))>0 )
    			*s++=b;
    		*s=0;
    		interpret(f);
    	}
    	return 0;
    }
    anche r, come altre var, non sembra servire a nulla ...
    eXtending-Php.net coming soon ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.