数组与dIfferent类型的变量的相等性

时间:2017-12-21 14:34:58

标签: c arrays recursion

#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;
 }

这是一个反转字符串的程序。如果我在函数temp中将int定义为char而不是reverse(),我不明白为什么该程序仍然有效。由于数组v[]的元素是char,因此类型计算如何工作?

3 个答案:

答案 0 :(得分:1)

int可以存储char可以存储的所有可能值,以及更多值。

因此,为char分配int值会保留该值,并且分配回char也会保留该值,因为该值来自char。< / p>

答案 1 :(得分:1)

在这种情况下你很好,因为任何char实例保证都适合int

(请注意,C中的{em>文字类似'j'int类型,可以保证它可以放入char)。

答案 2 :(得分:0)

将会发生截断,您将收到编译器的警告。

由于字符也是小整数,因此从概念上来说,从不同大小的整数赋值往往不是那么复杂,但实际上由于精度的不同,你可以删除位。

temp为整数时,指向当然没有,而是转而使用const char