2017-12-21 13 views
0
#include<stdio.h> 
#include<string.h> 

int reverse(char v[],int i,int j){ 
    char temp;//what happens if a define temp as an integer 
    if(j==1) 
     return 1; 
    temp=v[i];//computations 
    v[i]=v[j];//computations 
    v[j]=temp;//computations 

    reverse(v,++i,--j); 
} 


int main(void){ 
    char test[]="jimmakos"; 
    reverse(test,0,strlen(test)-1); 
    printf("%s",test); 
    return 0; 
} 

これは文字列を逆にするプログラムです。なぜ私はをのcharの代わりにintと定義すると、プログラムがまだ機能するのか理解できません。配列v[]の要素はcharタイプなので、計算はどのように機能しますか?変数の型と等価な配列

+1

'char' **は**整数です。 –

答えて

0

切り詰めが発生し、コンパイラから警告が表示されます。

文字も小さい整数なので、異なるサイズの整数に割り当てることは概念的に複雑ではありませんが、実際には精度の違いによってビットを削除することができます。

もちろんにはtempがありますが、代わりにconst charに行きます。

1

intには、charに保存できるすべての値を保存することができます。だからintその値を保持し、その値がcharから来たので、バックcharに割り当てることも、値を保存する。charに値を割り当てる

1

任意のcharインスタンスがintに収まるようにを保証しているので、あなたは、このインスタンスでいいですよ。

(Cで 'j'よう リテラルはそれが charに収まることができることを保証して intタイプであることに注意してください)。

関連する問題